2
我構建了一個簡單的Node socket.io服務器和兩個簡單的節點socket.io客戶端。每個客戶端連接到服務器,發送一個請求,等待響應並打印出來。問題是,每個響應打印兩次,因爲每個客戶不僅得到他自己的迴應,還得到另一個客戶的迴應!爲什麼?節點socket.io客戶端偵聽發送到其他客戶端的事件
這裏是服務器代碼:
var io = require('socket.io').listen(10001);
io.sockets.on('connection', function (socket) {
socket.on('echo', function (data) {
console.log("got request to echo "+data);
socket.emit("echoes", data+" "+data);
});
});
下面是客戶端代碼:
var socketioclient = require('socket.io-client');
var socket1 = socketioclient.connect(HOST, {port: PORT});
var socket2 = socketioclient.connect(HOST, {port: PORT});
socket1.on('connect', function() { console.log("socket1 connected!"); });
socket2.on('connect', function() { console.log("socket2 connected!"); });
socket1.on('echoes', function (result) { console.log("socket1 received: "+result); });
socket2.on('echoes', function (result) { console.log("socket2 received: "+result); });
socket1.emit('echo', "aaa");
socket2.emit('echo', "bbb");
下面是客戶端輸出:
socket1 connected!
socket2 connected!
socket1 received: aaa aaa
socket2 received: aaa aaa
socket1 received: bbb bbb
socket2 received: bbb bbb
這裏是服務器日誌:
info - socket.io started
debug - client authorized
info - handshake authorized niJGX0EXWvLPw2THZOeD
debug - setting request GET /socket.io/1/websocket/niJGX0EXWvLPw2THZOeD
debug - set heartbeat interval for client niJGX0EXWvLPw2THZOeD
debug - client authorized for
debug - websocket writing 1::
got request to echo aaa
debug - websocket writing 5:::{"name":"echoes","args":["aaa aaa"]}
got request to echo bbb
debug - websocket writing 5:::{"name":"echoes","args":["bbb bbb"]}
debug - emitting heartbeat for client niJGX0EXWvLPw2THZOeD
debug - websocket writing 2::
debug - set heartbeat timeout for client niJGX0EXWvLPw2THZOeD
debug - got heartbeat packet
debug - cleared heartbeat timeout for client niJGX0EXWvLPw2THZOeD
debug - set heartbeat interval for client niJGX0EXWvLPw2THZOeD
debug - emitting heartbeat for client niJGX0EXWvLPw2THZOeD
debug - websocket writing 2::
debug - set heartbeat timeout for client niJGX0EXWvLPw2THZOeD
This Works!謝謝。 – 2013-05-05 12:11:30