1

我使用这个简单的代码

客户端.html

http://pastebin.com/c1C2F9MQ

服务器.js

http://pastebin.com/Cqjhjfwm

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

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

    socket.broadcast.emit('AAA');

});

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

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

socket.emit('add', data);

});

我测试了套接字文本是否来了,它确实来了,我找不到问题谢谢

4

2 回答 2

1

socket.broadcast.emit将消息发送到连接到服务器的所有套接字,除了相关的socket。所以很可能add确实会到达服务器,但它会广播AAA您的客户端无法获得的广播。用于io.sockets.emit发送到所有连接的套接字。改变这个

socket.broadcast.emit('AAA');

io.sockets.emit('AAA');

更新

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

于 2013-06-04T16:04:05.337 回答
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()在你的客户端代码中。据我所知,客户端没有广播的概念。如果您想广播某些内容,则客户端应将其发送到服务器,然后服务器将广播给其他客户端。

于 2013-06-04T15:52:15.397 回答