NodeJS Websocket(ws)回调

时间:2017-02-22 11:42:27

标签: node.js websocket

我正在使用“ws”NodeJS websocket库。以前我在尝试socket.io;使用socket.io我可以在客户端和服务器之间实现回调,如下所示:

socket.emit('Data', data, function(data){
       console.log(data);
});

socket.on('Data', function(data, callback){
       callback('it worked');
});

我尝试使用ws库做同样的事情,但没有取得任何成功。是否可能,如果是这样的话?

2 个答案:

答案 0 :(得分:0)

可以通过WebSockets-Callback这样完成

wscb.send({cmd: 'Hello server!'},
    function(response){
        //do something...
    }
)

答案 1 :(得分:-1)

API非常相似,你可以做同样的事情。

例如,在服务器端而不是:

s.emit('message', 'message from server');

你使用:

s.send('message from server', ()=>{});

要在客户端接收它而不是:

s.on('message', function (m) {
  // ...
});

你使用:

s.addEventListener('message', function (m) {
  // ...
});

等等。

在这个答案中,我展示了示例代码(前端和后端)来演示Socket.io和WebSocket之间的区别:

这是示例服务器代码:

var path = require('path');
var app = require('express')();
var ws = require('express-ws')(app);
app.get('/', (req, res) => {
  console.error('express connection');
  res.sendFile(path.join(__dirname, 'ws.html'));
});
app.ws('/', (s, req) => {
  console.error('websocket connection');
  for (var t = 0; t < 3; t++)
    setTimeout(() => s.send('message from server', ()=>{}), 1000*t);
});
app.listen(3001, () => console.error('listening on http://localhost:3001/'));
console.error('websocket example');

示例浏览器代码:

var l = document.getElementById('l');
var log = function (m) {
    var i = document.createElement('li');
    i.innerText = new Date().toISOString()+' '+m;
    l.appendChild(i);
}
log('opening websocket connection');
var s = new WebSocket('ws://'+window.location.host+'/');
s.addEventListener('error', function (m) { log("error"); });
s.addEventListener('open', function (m) { log("websocket connection open"); });
s.addEventListener('message', function (m) { log(m.data); });

有关详细信息,请参阅this