Node.js NodeJS Websocket(ws)回调

Node.js NodeJS Websocket(ws)回调,node.js,websocket,Node.js,Websocket,我正在使用“ws”nodejswebsocket库。之前我在尝试socket.io;使用socket.io,我可以实现客户端和服务器之间的回调,如下所示: socket.emit('Data', data, function(data){ console.log(data); }); socket.on('Data', function(data, callback){ callback('it worked'); }); 我曾尝试使用ws-library做同样的

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

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

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

我曾尝试使用ws-library做同样的事情,但没有成功。有可能吗?如果有,如何实现?

API非常相似,您可以做几乎相同的事情

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

s.emit('message', 'message from server');
s.on('message', function (m) {
  // ...
});
您使用:

s.send('message from server', ()=>{});
s.addEventListener('message', function (m) {
  // ...
});
要在客户端接收,而不是:

s.emit('message', 'message from server');
s.on('message', function (m) {
  // ...
});
您使用:

s.send('message from server', ()=>{});
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');
有关更多信息,请参阅

这可以用这样的方法来完成

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