Pracuję nad prostym dwukierunkowym kanałem komunikacji klient/serwer Node.js i próbuję użyć socket.io na serwerze i gniazda . klient-klient na kliencie.Node.js wywołanie zwrotne serwera socket.io nie działa
Dodałem kod poniżej, ponieważ zobaczysz, że to całkiem podstawowe rzeczy, a ja działam na mojej lokalnej maszynie - aby zminimalizować złożoność.
Zachowanie widzę to:
- mogę uruchomić serwer.
- Serwer rejestruje "Serwer został uruchomiony" na konsolę.
- Uruchomę klienta.
- Klient rejestruje "Serwer jest gotowy!"
- nic się nie dzieje ...
Co Spodziewam się, że serwer log "klient jest gotowy! wiadomość, a następnie treść ("Gotowy otrzymany").
Używam nawet WireSharka do snuffowania linii i wygląda na to, że klient wysyła wiadomość, zgodnie z projektem - ale wywołanie zwrotne na serwerze nie jest uruchamiane.
biegnę węzła v0.8.4 z wyraźnej v3.1.0, socket.io v0.9.13 i socket.io-client v0.9.11 (wszystkie zainstalowane przez KMP).
Oto kod serwera ...
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);
});
A oto kod klienta ...
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);
})
Dokumentacja i przykłady zarówno socket.io i socket.io- klient jest nieco zdezorientowany (by być miłosiernym) i wydaje się, że jest trochę ruchomym celem ... ale z tego, co mogę powiedzieć, myślę, że to powinno zadziałać.
Mam nadzieję, że ktoś może mi doradzić, dokąd zmierzam?
nie jestem pewien co do 'serwerze ready' nazwy zdarzenia .. spróbuj' server_ready' bez przestrzeni ... – udidu
do „serwer gotowe wywołania zwrotne, ponieważ widzę, że serwer jest gotowy! wiadomość na konsoli. Jest to wywołanie zwrotne "comms" na serwerze, które nie uruchamia się. –
Tak, masz rację, teraz znowu widziałem twoje pytanie. Zobacz moją odpowiedź poniżej – udidu