Creator2.1.0 Socket.io2.2.0

做的微信小游戏项目,之前一直用的1.4.8版本的Socket.io,再往上编译就出错,偶然尝试了一下socket.io2.2.0,编译竟然通过了,微信小游戏里也能用,但不知道为什么能用是能用,但是偶尔会失灵连不上

…客户端连ip可以,域名不行,应该是服务器配置的问题,那socketio2.2.0还是挺好使的

socket.io 2 和 1 api差别还是有点大啊。我也是试过2在creator不好使,才一直用的1.4.8。客户端1.4.8,服务端用的最新的。。。协议没什么差异,可以运行:grinning:
但是经常首次用各种协议连接尝试,在微信小游戏下会报错卡住,H5正常

是我钻牛角尖了:joy:,其实用1.4.8或者用官方demo里那个或者最新的区别不大吧,其实自己封装也挺舒服,我就强迫症,试了一遍结果最新版能用了,就用最新的socket.io喽

另外服务器问题也找到了,nginx转发的时候server配置里的location要加三条东西

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

这样才能连上webSocket

要不试试2.2.0,我还在网上下了个socket.io.d.ts想拿ts写,就是总是找不到声明文件没代码提示就算了…

socket.io这块折腾了很久, 从刚开始用creator折腾到现在, 总算稍微整明白了一点.
在项目根目录npm安装socket.io-client和@types/socket.io-client
项目里就可以直接用ES6语法导入, 有代码提示, 很方便

import * as io from 'socket.io-client';

可以自己封装单例SocketManager来用.
最近搞明白websocket+protobuf怎么用了, 自己封装挺麻烦的.

我对引擎做了点点改造,在固定的环境下已经非常稳。懒得动
但是最近发布原生,发现还是被坑了
libwebsocket 这库不稳,所以用这个库的H5引擎都一样有坑。。。 原生还是得用原生socket靠谱