Ich arbeite an einem einfachen Node.js bidirektionalen Client \ Server-Kommunikationskanal und ich versuche, socket.io auf dem Server und Socket zu verwenden. io-client auf dem Client.Node.js socket.io Server-Callback funktioniert nicht
Ich habe den folgenden Code eingefügt, wie Sie sehen werden, ist es ziemlich einfach, und ich verwende beide auf meinem lokalen Rechner - um die Komplexität zu minimieren.
Das Verhalten Ich sehe ist:
- ich den Server starten.
- Der Server meldet 'Server gestartet' an die Konsole.
- Ich beginne den Client.
- Der Client meldet "Server ist fertig!"
- Nichts anderes passiert ...
Was ich würde erwarten, dass der Server ein anmelden 'Client ist fertig!' Nachricht und dann der Inhalt ('Bereit erhalten').
Ich habe sogar WireShark verwendet, um die Leitung zu schnüffeln und es scheint, dass der Client die Nachricht ausgibt, wie geplant - aber der Rückruf auf dem Server wird nicht ausgelöst.
Ich bin mit Knoten v0.8.4 mit Express v3.1.0, socket.io v0.9.13 und socket.io-Client v0.9.11 (alle über npm installiert).
Hier ist der Server-Code ...
var http = require('http'),
express = require('express'),
app = express(),
server = http.createServer(app);
app.configure(function(){
app.use(express.static(__dirname + '/public'));
});
server.listen(8080);
console.log("Server started");
var io = require('socket.io').listen(server);
io.sockets
.on('connection', function(socket){
socket.emit('server ready', { msg: 'ready' }) ;
})
.on('comms', function(content) {
console.log('Client is ready!');
console.log(content);
});
Und hier ist der Client-Code ...
var clientio = require('socket.io-client');
var socket = new clientio.connect('http://localhost', { port: 8080 });
socket
.on('server ready', function(data){
console.log('Server is ready!');
socket.emit('comms', 'Ready received');
})
.on('connect-error', function(error) {
console.log('Connection Error\n' + error);
})
.on('error', function(error) {
console.log('Socket Error\n' + error);
})
Die Dokumentation und Beispiele für beide socket.io und socket.io- Client sind etwas verwirrt (um wohltätig zu sein) und sie scheinen ein bisschen ein bewegliches Ziel zu sein ... aber von dem, was ich sagen kann, denke ich, sollte das funktionieren.
Ich hoffe, jemand kann mir Rat geben, wo ich falsch liege?
Ich bin nicht sicher über die 'Server bereit 'Ereignisnamen .. versuchen' server_ready' ohne Raum ... – udidu
Der ‚Server Bereit 'Callback wird ausgelöst, weil ich den' Server ist fertig! ' Nachricht auf der Konsole. Es ist der 'comms' Callback auf dem Server, der nicht feuert. –
yeah du hast Recht, jetzt habe ich deine Frage erneut gesehen .. siehe meine Antwort unter – udidu