2017-02-22 20 views
0

"ws" NodeJS websocketライブラリを使用しています。以前私はsocket.ioを試していました。 socket.ioで私はこのように、クライアントとサーバ間のコールバックを実装することができます:私は、WSライブラリを使用して同じことを行うことを試みたが、任意の成功を持っていなかったNodeJS Websocket(ws)コールバック

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

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

。それは可能なのか、それではどうすればよいのでしょうか?

答えて

0

APIはかなり似ており、同じことをほぼ同じことができます。

サーバー側の例の代わりのために:

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

使用:

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

がするのではなく、クライアント側でそれを受信するには:

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

あなたが使用します。

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

など。この回答で

Iは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を参照してください。

関連する問題