weapp-socketio / weapp.socket.io Goto Github PK
View Code? Open in Web Editor NEWA WebSocket client for building WeChat Mini Program implement by socket.io
Home Page: http://weappsocket.matong.io
License: MIT License
A WebSocket client for building WeChat Mini Program implement by socket.io
Home Page: http://weappsocket.matong.io
License: MIT License
不用v3就没有问题,用v3就一直报连接超时,无法连接上服务器
小程序只支持ws(s),并不支持http(s),所以在生产环境下跑不通啊,求解答
老铁是不是忘了什么?
微信小程序没办法接收broadcast事件
如果服务器端使用 netty-socketio(java语言)。连接如果指定namespace的话(path:"/abc"),会出错,无法连接成功。希望作者可以看看:failed: Error during WebSocket handshake: Unexpected response code: 400
dist/weapp.socket.io.js 里面的代码是压缩混淆过的。没有找到项目的源码
import io = require("./Libs/js/weapp.socket.io");
let socket = io("ws://192.168.1.230:8080");
console.log(socket);
socket.emit("ls@", "Fast");
socket.on("user", function(user) {
console.log(user);
});
打印
l {io: l, nsp: "/", json: l, ids: 0, acks: {…}, …}
{
acks:{}
connected:false
disconnected:true
flags:{}
ids:0
io:l {nsps: {…}, subs: Array(4), opts: {…}, _reconnection: true, _reconnectionAttempts: Infinity, …}
json:l {io: l, nsp: "/", json: l, ids: 0, acks: {…}, …}
nsp:"/"
receiveBuffer:[]
sendBuffer:Array(1)
0:{type: 2, data: Array(2), options: {…}}
length:1
__proto__:Array(0)
subs:(3) [{…}, {…}, {…}]
_callbacks:{$connecting: Array(1), $connect: Array(1), $user: Array(1)}
__proto__:Object
}
小程序中 使用 socket.io ,连接php服务器中原生的socket ,连接不成功 返回连接超时 ,和连接失败!
小程序中 如果使用原生的socket , 可以连接到php服务器,返回成功,这是什么原因?
JSON.stringify cannot serialize cyclic structures
今天从该仓库拉取到本地重新编译的。
我链接的服务端数据能够正常收发。但是上面的错误一直在报,从而也导致我其它业务无法正常使用。
找不到文件: xxxx/node_modules/weapp.engine.io/lib/transports/polling-xhr
module "npm/weapp.engine.io/lib/transports/index.js" is not defined
Error: module "npm/weapp.engine.io/lib/transports/index.js" is not defined
it seems that wepy can not build well with this lib
发送 ArrayBuffer 数据时发现是发的空包过去,示例代码
const ws = io('ws://127.0.0.1:8092', {
forceNew: true,
reconnection: false,
})
ws.open()
ws.on('connect', () => {
const buffer = (new TextEncoder()).encode(JSON.stringify({hello: 'world'})).buffer
ws.emit('DATA', buffer)
})
在 Frames 看到发送的数据实际上是 ["DATA", {}]
,buffer 数据全丢了,所以猜测是不是目前还没有支持 ArrayBuffer
const socket = require("../../utils/socket.js")
socket.connect((status, ws) => {
this.ws = ws;
ws.close();
ws.open();
ws.emit('quotationH5', {
"secret": "h5Socket",
"appType": "h5"
})
console.log(ws)
ws.on('quotationPushH5', res => {
console.log(res);
var data = JSON.parse(res);
var quotation = null;
for (var key in data) {
quotation = key
}
_this.setData({
key:quotation,
value: data[quotation]
})
})
})
搞错了,不好意思
const sendHeader = {
"pt": "weixin",
"sv": "18",
"lg": "zh-CN"
};
onSocket = io.connect(server, {
path: "/" + path,
transports: ['polling'],
transportOptions: {
polling: {
extraHeaders: sendHeader
}
}
});
在微信小程序中使用wss协议,会被转https协议,是否意味着不能使用wss协议?
支持 stomp 协议以及添加自定义 socket 的 headers 吗?
2019-06-18 17:38:49.696 [nioEventLoopGroup-7-4] ERROR c.corundumstudio.socketio.handler.InPacketHandler - Error during data processing. Client sessionId: 19a2030f-c6b1-4c7a-801a-be6415b19fe4, data: deviceKey=1560850726332&deviceType=-1,
java.lang.IllegalStateException: null
at com.corundumstudio.socketio.protocol.PacketType.valueOf(PacketType.java:48)
at com.corundumstudio.socketio.protocol.PacketDecoder.readType(PacketDecoder.java:86)
at com.corundumstudio.socketio.protocol.PacketDecoder.decode(PacketDecoder.java:160)
at com.corundumstudio.socketio.protocol.PacketDecoder.decodePackets(PacketDecoder.java:142)
at com.corundumstudio.socketio.handler.InPacketHandler.channelRead0(InPacketHandler.java:65)
at com.corundumstudio.socketio.handler.InPacketHandler.channelRead0(InPacketHandler.java:36)
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:288)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965)
at com.corundumstudio.socketio.transport.WebSocketTransport.channelRead(WebSocketTransport.java:95)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at com.corundumstudio.socketio.transport.PollingTransport.channelRead(PollingTransport.java:109)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at com.corundumstudio.socketio.handler.AuthorizeHandler.channelRead(AuthorizeHandler.java:137)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:310)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:284)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:628)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:563)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:480)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:442)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:748)
2019-06-18 17:38:49.698 [nioEventLoopGroup-7-4] ERROR c.c.socketio.listener.DefaultExceptionListener - null
java.lang.IllegalStateException: null
at com.corundumstudio.socketio.protocol.PacketType.valueOf(PacketType.java:48)
at com.corundumstudio.socketio.protocol.PacketDecoder.readType(PacketDecoder.java:86)
at com.corundumstudio.socketio.protocol.PacketDecoder.decode(PacketDecoder.java:160)
at com.corundumstudio.socketio.protocol.PacketDecoder.decodePackets(PacketDecoder.java:142)
at com.corundumstudio.socketio.handler.InPacketHandler.channelRead0(InPacketHandler.java:65)
at com.corundumstudio.socketio.handler.InPacketHandler.channelRead0(InPacketHandler.java:36)
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:288)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965)
at com.corundumstudio.socketio.transport.WebSocketTransport.channelRead(WebSocketTransport.java:95)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at com.corundumstudio.socketio.transport.PollingTransport.channelRead(PollingTransport.java:109)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at com.corundumstudio.socketio.handler.AuthorizeHandler.channelRead(AuthorizeHandler.java:137)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:310)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:284)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:628)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:563)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:480)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:442)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:748)
WS.prototype.doOpen:
success: function(res) { debug('websocket-weapp connected success.', res) this.socketTaskId = res.socketTaskId },
在微信开发者工具里:
o = e.apply(e, arguments);
success回调里的this就变成了匿名函数本身,设置socketTaskId没有意义,导致doClose也没有意义了
微信小程序上报这个错
Cannot set property 'socketTaskId' of null
on wechatReporting this error at WeChat
this.socket = io('socketUrl')
this.socket.on('connect', () => {
console.log('connect')
})
this.socket.emit('match', {
user: this.me,
}, (data) => {
console.log(data)
})
cant got data
微信开发者工具中正常
比如说连接 localhost:3000
,发送的请求会自动变成 localhost
小游戏中不能使用?
在小程序中使用没有问题,在小游戏官方提供的打飞机游戏里面使用,没有报错,但是也没有简历websocket连接
`从客户端日志看到的情况是:
14:36:48.318 收到 connectSocket 调用
14:36:48.505 抛了 open 事件
14:37:13.511 收到 send 调用
所以这里的问题在于前端收到 open 事件之后,等待了 15s 才调用 send 接口。从你贴的代码看到,你是用了 socket.io 这个库。按你的预期,应该是调用了 socket.emit 之后就会去调用底层的 send 接口,但实际上没有。
具体原因需要你进一步排查,建议不用 socket.io 这个库,直接用原生接口尝试下是否还有这个问题。如果问题不存在了,说明是 socket.io 内逻辑异常;如果问题还存在,再提供日志我们这边定位一下。`
以上是微信官方给的答复,问题详见https://developers.weixin.qq.com/community/develop/doc/00008ef30205a02b81791310356800
小程序版本测试通过, uniapp的websocket 接口与小程序完全一致, 我试着把所有的wx. 替换成 uni. 结果在uniapp中不断的断开重连。 现在uniapp 支持全端,如果可以支持socket.io 就太好了,https://uniapp.dcloud.io/api/request/websocket
在wepy中使用weapp.socket.io 会提示找不到polling-xhr
搜索了weapp.socket.io 和 weapp.engine.io, 并没有发现有引入这个文件的地方.
目前不清楚为什么找不到该文件
看到 todo 里有写 alipay mini program,最近做钉钉小程序需要用到 socket.io,请问这块支持什么时候可以发布~?
代码如下,当第二次连接指定query时, socket无法更新
socket = io(socket_url + roomid, {
query: "openid=" + openid + "&sessionid=" + sessionid,
upgrade: false,
transports: ['websocket']
});
socket.connect()
如果你的项目正在使用 weapp.socket.io 欢迎留下你的项目信息(名称,Logo,小程序二维码,官网等),我会将信息放在 weapp.socket.io 的 官方首页 上展出。欢迎在下面提交您的项目。
我们websocket有两个命名空间/chat,/control,
第一次进入教室的时候
control con
chat con
正常
第一次退出教室的时候
control disconnect正常
chat disconnect正常
第二次进入时
微信小程序提示最多“同时最多发起 2 个 socket 请求,更多请参考文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/network-socket.html”
connect 代码
`
zbyIm.cl = io(options.url + '/control', {'transports': ['websocket']});
zbyIm.im = io(options.url + '/chat', {'transports': ['websocket']});
`
disconnect 代码
`
/**
* disConnect
* 断开连接
*/
zbyIm.disConnect = function(){
zbyIm.cl.emit('leave_room');
zbyIm.im.emit('leave_room');
zbyIm.cl.disconnect();
zbyIm.im.disconnect();
};
`
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.