Mrs4s / go-cqhttp

cqhttp的golang实现,轻量、原生跨平台.
GNU Affero General Public License v3.0
10.36k stars 1.63k forks source link

[Bug]: robot无法通过socket发出消息 #1982

Closed feifeishenFFS closed 1 year ago

feifeishenFFS commented 1 year ago

请确保您已阅读以上注意事项,并勾选下方的确认框。

go-cqhttp 版本

go-cqhttp开发版

运行环境

Windows (64)

运行架构

x86

连接方式

HTTP

使用协议

2 | Android Watch

重现步骤

我使用HTTP方式进行通信,robot能正确的反馈出收到的qq群信息,但是无法将信息通过socket发送给5701端口,是cqhttp本身没给socket发出消息吗?

期望的结果是什么?

期望的结果:我的监控程序5701端口能收到来自robot的信息,采用socket通信

实际的结果是什么?

实际的结果:socket并没有生效。即使我的robot和监控程序都在运行。监控程序里面并不能输出收到的内容,rev_msg的结果并不能输出

简单的复现代码/链接(可选)

监控程序:
import socket
import json
ListenSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ListenSocket.bind(('127.0.0.1', 5701))
ListenSocket.listen(100)
HttpResponseHeader = '''HTTP/1.1 200 OK\r\n
Content-Type: text/html\r\n\r\n
'''
def request_to_json(msg):
    for i in range(len(msg)):
        if msg[i]=="{" and msg[-1]=="\n":
            return json.loads(msg[i:])
    return None
#需要循环执行,返回值为json格式
def rev_msg():# json or None
    Client, Address = ListenSocket.accept()
    Request = Client.recv(1024).decode(encoding='utf-8')
    rev_json=request_to_json(Request)
    Client.sendall((HttpResponseHeader).encode(encoding='utf-8'))
    Client.close()
    return rev_json

日志记录(可选)

ROBOT的日志:
lighthouse@VM-8-13-ubuntu:~/qqrobot$ ./go-cqhttp
[2023-03-15 12:35:52] [INFO]: 当前版本:v1.0.0-rc4
[2023-03-15 12:35:52] [INFO]: 将使用 device.json 内的设备信息运行Bot.
[2023-03-15 12:35:52] [INFO]: Bot将在5秒后登录并开始信息处理, 按 Ctrl+C 取消.
[2023-03-15 12:35:57] [INFO]: 开始尝试登录并同步消息...
[2023-03-15 12:35:57] [INFO]: 使用协议: Android Watch
[2023-03-15 12:35:58] [INFO]: Protocol -> connect to server: [::ffff:14.22.9.53]:8080
[2023-03-15 12:35:58] [WARNING]: Protocol -> device lock is disable. http api may fail.
[2023-03-15 12:36:00] [INFO]: 登录成功 欢迎使用: xxx
[2023-03-15 12:36:00] [INFO]: 开始加载好友列表...
[2023-03-15 12:36:00] [INFO]: 共加载 3 个好友.
[2023-03-15 12:36:00] [INFO]: 开始加载群列表...
[2023-03-15 12:36:00] [INFO]: 共加载 4 个群.
[2023-03-15 12:36:00] [INFO]: 资源初始化完成, 开始处理信息.
[2023-03-15 12:36:00] [INFO]: アトリは、高性能ですから!
[2023-03-15 12:36:00] [INFO]: 正在检查更新.
[2023-03-15 12:36:00] [INFO]: CQ HTTP 服务器已启动: 127.0.0.1:5700
[2023-03-15 12:36:01] [INFO]: 收到服务器地址更新通知, 将在下一次重连时应用.
[2023-03-15 12:36:01] [INFO]: 检查更新完成. 当前已运行最新版本.
[2023-03-15 12:36:01] [INFO]: 开始诊断网络情况
[2023-03-15 12:36:04] [INFO]: 网络诊断完成. 未发现问题
[2023-03-15 12:36:27] [INFO]: 收到群xx(7******4) 内 飞**(*******) 的消息: hi (********)

端口情况:

tcp        0      0 127.0.0.1:5700          0.0.0.0:*               LISTEN      1893987/./go-cqhttp 
tcp        0      0 127.0.0.1:5701          0.0.0.0:*               LISTEN      1894301/python3

补充说明(可选)

No response

Ink-33 commented 1 year ago

哥们咱要不找个http库,别用socket了

feifeishenFFS commented 1 year ago

哥们咱要不找个http库,别用socket了

用http好像也不太行。 我尝试用requests库来get5700端口robot的信息,反馈都是404的消息。

我的socket通信参考这里的代码: https://blog.csdn.net/xingjiahao200910/article/details/126012451 他这里有send、recv和bot主程序。我上个月都正常用的,最新重新部署了一下就不行了

Mrs4s commented 1 year ago

请不要使用socket, 建议使用正常的库