我使用这个简单的代码
客户端.html
服务器.js
一切正常,直到我的客户端代码的最后一步
socket.on('add', function(data) {
socket.broadcast.emit('AAA');
});
似乎套接字添加永远不会出现,但在我的服务器上我有
socket.on('Text', function(data) {
socket.emit('add', data);
});
我测试了套接字文本是否来了,它确实来了,我找不到问题谢谢
我使用这个简单的代码
客户端.html
服务器.js
一切正常,直到我的客户端代码的最后一步
socket.on('add', function(data) {
socket.broadcast.emit('AAA');
});
似乎套接字添加永远不会出现,但在我的服务器上我有
socket.on('Text', function(data) {
socket.emit('add', data);
});
我测试了套接字文本是否来了,它确实来了,我找不到问题谢谢
socket.broadcast.emit将消息发送到连接到服务器的所有套接字,除了相关的socket。所以很可能add确实会到达服务器,但它会广播AAA您的客户端无法获得的广播。用于io.sockets.emit发送到所有连接的套接字。改变这个
socket.broadcast.emit('AAA');
至
io.sockets.emit('AAA');
我也忽略了您是socket.broadcast.emit从客户端而不是从服务器调用的。它会在浏览器控制台上显示错误,因为客户端上没有广播。
目前您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()在你的客户端代码中。据我所知,客户端没有广播的概念。如果您想广播某些内容,则客户端应将其发送到服务器,然后服务器将广播给其他客户端。