我正在尝试用Node.js(Express)和Socket.io编写一个基本的聊天应用程序。一切似乎都在工作,但我的套接字服务器似乎只是将消息"发送"回原始发件人。这是我的插座代码:
var client = io.listen(app);
client.sockets.on('connection', function (socket) {
socket.on('message', function (data) {
console.log(data);
socket.send(data);
});
});
这是我的客户端代码:
$(document).ready(function() {
var socket = new io.connect('http://localhost:3000');
socket.on('connect', function() {
socket.send('A client connected.');
});
socket.on('message', function(message) {
$('#messages').html('<p>' + message + '</p>' + $('#messages').html());
console.log(socket);
});
$('input').keydown(function(event) {
if(event.keyCode === 13) {
socket.send($('input').val());
$('input').val('');
}
});
});
感谢您的帮助。
使用client.sockets.emit
而不是socket.emit
。它将发射到每个连接的客户端(广播),使用套接字对象只发送到特定的客户端。
服务器端,我想你想要:
socket.broadcast.emit(data);
而不是:
socket.send(data);
请参阅"如何使用"页面底部的"广播消息"。:)