我从带有websocket的网页获取数据但我需要将它与socketIO一起部署到客户端。在我的server.js客户端与socketio很好地连接但是在数据(line1 line2)无法正常运行后,我总是需要重启服务器2-3次。然后它就来了。
这是我的陈词滥调
var server = require('http').Server(app);
var io = require('socket.io')(server);
const WebSocket = require('ws')
const wss = new WebSocket('gettingDataAdress');
io.on('connection', function (socket) {
console.log("client connected");
wss.on('open', () => {
console.log("send processing");
//line1
})
wss.on('message', () => {
console.log("getting message processing");
//line2
})
重新启动我的server.js 2-3次后它可以来到line1和line2,它不能直接。但是每当我评论socketio Part(我的意思是只有websocket工作)它才能完美。我怎么能去做 ?谢谢
答案 0 :(得分:1)
您正在使用两个不同的websockets ws
和socket.io
。仅使用一个连接到客户端并订阅即将发送的消息
io.on('connection', function (socket) {
console.log("client connected");
socket.on('open', () => {
console.log("send processing");
//line1
})
socket.on('message', () => {
console.log("getting message processing");
//line2
})
const WebSocket = require('ws');
const ws = new WebSocket('url');
ws.on('open', () => {
//do processing
});
ws.on('message', () => {
//do processing
});
答案 1 :(得分:0)
想写评论,但没有写声望,所以决定在这里写。抱歉!
如果要订阅,请使用socket.io-client
。但是,socket-io
本身不是订阅wss
的合适库。
https://github.com/socketio/socket.io-client/issues/1208
实际上,Socket.IO不是WebSocket实现,它具有自己的协议,可以使用WebSocket连接来传输数据 -darrachequesne-(socket-io客户端库的最大贡献者)
因此,如果您从wss页面获取数据,请使用ws库并通过socket-io进行传播。我相信您所做的一切都很好。可能需要修复一些。
Connecting to GDAX websocket api using socket.io with webpack 还有类似的问题可以从ws获取数据。