Giter Site home page Giter Site logo

chocolatl / qqlight-websocket Goto Github PK

View Code? Open in Web Editor NEW
118.0 118.0 19.0 239 KB

QQLight机器人WebSocket-RPC插件,让你能够使用任何语言编写QQ机器人程序

License: Other

Makefile 0.56% C 99.44%
json plugin qq qqbot qqlight websocket

qqlight-websocket's People

Contributors

chocolatl avatar linrol avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

qqlight-websocket's Issues

监听地址问题

监听地址为localhost,而非0.0.0.0。
最新的源代码似乎已变更为0.0.0.0,但发行版插件似乎仍然使用了localhost地址,见下图:

使用python socketio client连接400错误

使用python socketio client连接qqlight-ws报400错误,但是python连接flask_websocketio服务器没问题。
在网页上用js可以连接qqlight-ws确是好的。

python client connect issue

得到以下错误:
(插件日志)
09-24 16:07:44 WebSocket Protocol receiveComingData Bytes received: 179
09-24 16:07:44 WebSocket Protocol wsShakeHands Missing required fields

客户端日志:
ERROR:root:HTTP 400: Bad Request
Traceback (most recent call last):
File "C:/workspace/qqlight/client.py", line 26, in connect
self.ws = yield websocket_connect(self.url)
File "C:\Users\yangy\Miniconda3\envs\qqlight\lib\site-packages\tornado\gen.py", line 1133, in run
value = future.result()
tornado.httpclient.HTTPClientError: HTTP 400: Bad Request

客户端代码:

class Client(object):
def init(self, url, timeout):
self.url = url
self.timeout = timeout
self.ioloop = IOLoop.instance()
self.ws = None
self.connect()
self.ioloop.start()

@gen.coroutine
def connect(self):
    try:
        self.ws = yield websocket_connect(self.url)
    except Exception as e:
        logger.exception(e)
    else:
        logger.info("connected")
        self.run()

if name == "main":
client = Client("ws://192.168.1.8:49632/", 5)
这段代码连接别的客户端是没问题的。
另基于js的客户端代码示例也没有问题,可以连接

qqlight-websocket做为客户端

能出一个qqlight-websocket作为客户端的版本么。
遇到这么一个场景:需要一个集中处理QQ消息服务器,消息服务器还要挂接其他的业务服务器。是一个被动型的处理,不是向QQ主动发送消息

因为水平问题,不知道怎么把处理QQ消息的ws客户端集成在web服务器上,如果qqlight-websocket是ws的客户端,那么就能在自己的服务器上业务处理。不用再写一个中间的qq消息处理了。

嘿嘿

你拿个这个是拿来做什么玩的呀!做出了了什么好玩的事情了吗

请教一下 api.h 中函数指针全局变量的问题

首先感谢作者提供了如此简单和优美的 websocket 接口。关于源码中有个问题想请教一下您,在 api.h 中定义的函数指针全局变量,比如下面这个:

const char* __stdcall (*QL_getPluginPath)(const char* authCode);

这里定义了一个指针类型的全局变量。但这个 api.h 又被好几个源文件 include ,按我的理解,似乎是应该只有一个源文件中是定义变量,其他源文件中都只是声明变量,需要加上 extern 关键字,比如:

extern const char* __stdcall (*QL_getPluginPath)(const char* authCode);

这里为什么可以不加修改的被多个源文件 include ,且可以正常链接而不报重复定义的错?

addFriend: invalid data issue

09-24 19:52:03 WebSocket Protocol wsClientDataHandle Payload data is {"method": "addFriend", "params": {"qq": 1927115659, "message": "test add friend"}}

09-24 19:49:59 WebSocket Protocol wsClientDataHandle Payload data is {"method": "addFriend", "params": {"qq": "1927115659", "message": "test add friend"}}

09-24 19:52:03 WebSocket Protocol jsonRPC Client call 'addFriend' method
09-24 19:52:03 WebSocket Protocol jsonParse Invalid data

无论是哪种调用格式都是合格的json,为何认定数据格式无效?

文件接收不正常

使用示例进行测试,发送了一个文件,收到一个语音。。。
另外,能否开发一个HTTP(S)协议的插件

C#作为客户端连接,老是报被远程连接中断,是个什么情况和原因啊?

日志显示“Connection close frame”
能接收一阵子数据,然后断掉

代码如下
//todo 接受推送过来的消息和事件,在这里面进行解析和分发
async void StartReceiving(ClientWebSocket client)
{
while (true)
{
var array = new byte[4096];
WebSocketReceiveResult result = await client.ReceiveAsync(new ArraySegment(array), CancellationToken.None);
await client.CloseOutputAsync(WebSocketCloseStatus.Empty,"",CancellationToken.None);

            if (result != null)
            {
                if (result.MessageType == WebSocketMessageType.Text)
                {
                    string msg = Encoding.UTF8.GetString(array, 0, result.Count);
                    Console.ForegroundColor = ConsoleColor.DarkBlue;
                    Console.WriteLine("--> {0}", msg);
                    Console.ForegroundColor = ConsoleColor.DarkGray;
                 
                    //todo 对消息进行解析,事件分发

                   JObject msgobj = (JObject)JsonConvert.DeserializeObject(msg);//或者JObject jo = JObject.Parse(jsonText);
                    switch (msgobj["event"].ToString())
                    {
                        case "message":
                            recieveMsgEvent(msgobj);
                            break;
                        case "friendRequest":break;
                        case "friendChange":break;
                        case "groupMemberIncrease":break;
                        case "groupMemberDecrease":break;
                        case "adminChange":break;
                        case "groupRequest":break;
                        case "receiveMoney":break;
                    }
                }
            }
        }
    }

加群请求经常不成功

大佬,邀请加群和主动加群经常不成功是什么情况啊?
另外接口getLoginAccount能否同时返回登录QQ号码和昵称?
接口 退出群能否增加一个是否永久拒绝此人入群参数?
事件 收到消息时能否同时把对方的昵称、群名片、群角色同步返回呢?

图片下载

请问:
当收到图片消息 [QQ:pic=xxx-xx-xxx-xxx-xx.jpg]
有接口可以下载该图片么。或者得到图片的真实地址

发送较大图片会让websocket连接中断

我尝试着做一个QQ跑团游戏,利用JS canvas导入背景地图后,在上面描绘人物所在位置的点。背景图37KB,描绘后将Base64转为16进制数据,利用method: "uploadImage"接口发送的时候,会导致与QQLight的连接中断(这时的JSON data项有590KB大)。使用较小背景图(5KB)测试后能够正常发送,所以考虑是图片大小的原因
日志
08-27 09:32:05 WebSocket Protocol receiveConnect Accepted client: 1.0.0.0:10606
08-27 09:32:05 WebSocket Protocol wsShakeHands WebSocket handshake succeeded
08-27 09:32:10 QQLight [接收]-群消息 群:511371420 QQ:1097793260 。pic 70 50
08-27 09:32:10 WebSocket Protocol wsClientDataHandle This is not the final fragment in a message
08-27 09:32:10 WebSocket Protocol removeClient Client socket closed, now length of clients: 0

文档支持

缺少以下文档:

  1. 一些API请求中,对数据类型的格式没有说明。比如请求字段/返回结果字段应该是字符串还是数字等。
  2. 没有错误码说明:比如我遇到下面的问题:
    recv {"id":"622d1364-b848-4d9c-942d-d728b458b8b0","result":{"ec":4,"em":"basekey err"}}
    这是请求
    10-19 20:10:17 WebSocket Protocol wsClientDataHandle Payload data is {"method": "getGroupList", "id": "622d1364-b848-4d9c-942d-d728b458b8b0"}
    的返回结果。从qqlight日志上看,请求是成功了的。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.