套接字发出不从客户端发送(从服务器发送正常)

时间:2014-06-30 04:23:23

标签: node.js socket.io

以下是一个单元测试,用于显示我正在经历的行为,我认为这与我之前所经历的不同。从本质上讲,我之前(也许两个月前)使用套接字的方式在当时和现在之间的某个时间停止了工作。我不确定发生了什么。我以前工作的代码已经崩溃了。

var socketio = require('socket.io');
var http = require('http');

var server = http.createServer(function(req, res) {
    res.writeHead(200, {'Content-Type' : 'text/html' });
    var html = "<html><head><script src=\"/socket.io/socket.io.js\"></script>\
                        <script>var sock = io.connect();\
                        sock.on('sup', function(data) {\
                            console.log(\"whoo\");\
                            sock.emit('howdy', {'hi' : 'ho'});\
                        });</script></head></html>";
    res.end(html);
}).listen(8080);

socketio.listen(server, {log:false}).on('connection', function(socket) {
    socket.on('howdy', function(data){console.log("HI!");});
    socket.emit("sup", {"hey" :"yo"});
});

我对代码的期望是以下事件序列:

  1. 套接字连接,服务器发出“sup”消息。
  2. 客户端收到“sup”消息并记录“whoo”
  3. 客户端发送“howdy”消息
  4. 服务器收到“howdy”消息并记录“HI!”
  5. 步骤4根本没有发生。 (因此我假设步骤3可能不会发生)

    发生了什么事?

2 个答案:

答案 0 :(得分:1)

您的客户端代码基本上就是

var sock = io.connect(); 
console.log("Gets here");
sock.on('sup', function(data) { 
     console.log("whoo"); 
});
sock.emit('howdy', {'hi' : 'ho'});

我假设只要你将发射器移动到处理程序中它就会起作用。

var sock = io.connect(); 
console.log("Gets here");
sock.on('sup', function(data) { 
     console.log("whoo"); 
     sock.emit('howdy', {'hi' : 'ho'});
});

或者您可以尝试侦听连接事件

var sock = io.connect(); 
console.log("Gets here");
sock.on('sup', function(data) { 
     console.log("whoo"); 
});
sock.on('connect', function() {
     sock.emit('howdy', {'hi' : 'ho'});
});

答案 1 :(得分:0)

我刚刚更新了socket.io,它现在正在运行。