2017-02-22 6 views
0

Ich verwende die "Ws" NodeJS Websocket-Bibliothek. Zuvor habe ich socket.io ausprobiert; mit socket.io konnte ich Rückrufe zwischen dem Client und Server wie folgt implementieren:NodeJS Websocket (WS) Callback

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

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

Ich habe versucht, das Gleiche mit der ws Bibliothek zu tun, haben aber keinen Erfolg hatte. Ist es möglich, und wenn ja, wie?

Antwort

0

Die API ist ziemlich ähnlich und Sie können so ziemlich die gleichen Dinge tun.

Zum Beispiel auf der Serverseite statt:

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

Sie verwenden:

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

Um es auf der Client-Seite zu erhalten statt:

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

Sie verwenden:

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

Und so weiter.

In dieser Antwort, die ich Beispielcode zeigte (beide Frontend und Backend), um die Differenz zwischen Socket.io und WebSocket zu demonstrieren:

Dies ist zB Servercode:

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'); 

Beispiel browser code:

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); }); 

Weitere Informationen finden Sie unter this.

Verwandte Themen