连接2个websockets ws和socket.io

时间:2018-03-22 05:59:05

标签: node.js websocket socket.io

我从带有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工作)它才能完美。我怎么能去做 ?谢谢

2 个答案:

答案 0 :(得分:1)

您正在使用两个不同的websockets wssocket.io。仅使用一个连接到客户端并订阅即将发送的消息

仅限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
   })

只有ws

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获取数据。