Socket.io没有听

时间:2013-06-04 15:45:25

标签: javascript node.js socket.io

我正在使用这个简单的代码

Client.html

http://pastebin.com/c1C2F9MQ

Server.js

http://pastebin.com/Cqjhjfwm

一切正常,直到我的客户端代码的最后一步

socket.on('add', function(data) {

    socket.broadcast.emit('AAA');

});

似乎套接字添加永远不会出现,但在我的服务器上我有

socket.on('Text', function(data) {

socket.emit('add', data);

});

我测试了套接字文本是否会出现,但是我确实无法找到问题 感谢

2 个答案:

答案 0 :(得分:1)

socket.broadcast.emit向连接到服务器的所有套接字发送消息,但相关的socket除外。所以最有可能add来到服务器,但它会广播你的客户无法获得的AAA。使用io.sockets.emit发送到所有连接的套接字。改变这个

socket.broadcast.emit('AAA');

io.sockets.emit('AAA');

更新

我也忽略了你从客户端而不是从服务器调用socket.broadcast.emit。它会在浏览器控制台上显示错误,因为客户端上没有广播。

答案 1 :(得分:0)

目前,客户端的on('add')代码位于on('connect')不正确的事件中......

你需要把它带到那里,所以它变成了:

socket.on('connect', function () {
    $('#button').click(function() {  
        var addtext = $('#text').val();
        socket.emit('Text', addtext);
    });
});

socket.on('add', function(data) {  
    socket.emit('AAA');  
});

编辑:我刚刚注意到您的客户端代码中有socket.broadcast.emit()。据我所知,没有客户广播的概念。如果要广播某些内容,则客户端应将其发送到服务器,然后服务器将广播到其他客户端。