Javascript Can';t向所有套接字(socket.io)发送消息

Javascript Can';t向所有套接字(socket.io)发送消息,javascript,node.js,express,socket.io,Javascript,Node.js,Express,Socket.io,呵呵,我正在尝试构建一个小型聊天客户端,学习WebSocket如何工作,以便在画布上制作游戏。它在发送套接字时非常有效,但它们只将其发送给编写它的人 我想我错过了一些小东西,但我不明白为什么它不起作用 服务器端代码 var app = require('express')() , server = require('http').createServer(app) , io = require('socket.io').listen(server); server.listen(300

呵呵,我正在尝试构建一个小型聊天客户端,学习WebSocket如何工作,以便在画布上制作游戏。它在发送套接字时非常有效,但它们只将其发送给编写它的人

我想我错过了一些小东西,但我不明白为什么它不起作用

服务器端代码

var app = require('express')()
  , server = require('http').createServer(app)
  , io = require('socket.io').listen(server);

server.listen(3000);

app.get('/', function (req, res) {
  res.sendfile(__dirname + '/index.html');
});

io.sockets.on('connection', function (socket) {
  socket.on('user-message', function (data) {
    console.log(data);
    sendMessage(data.message);
  });
});

var sendMessage = function(message) {
      io.sockets.emit('server-message', {message: message});
}
        <script src="/socket.io/socket.io.js"></script>
        <script>
            var socket = io.connect('http://localhost');

            socket.on('server-message', function (data) {
                var history = $('#chatbox').val();

                $('#chatbox').val(history + "\n" + data.message)
            });


            $("#write").keyup(function(event){
                if(event.keyCode == 13){
                    socket.emit('user-message', {message: $(this).val()});
                    $(this).val('');
                }
            });
        </script>
客户端代码

var app = require('express')()
  , server = require('http').createServer(app)
  , io = require('socket.io').listen(server);

server.listen(3000);

app.get('/', function (req, res) {
  res.sendfile(__dirname + '/index.html');
});

io.sockets.on('connection', function (socket) {
  socket.on('user-message', function (data) {
    console.log(data);
    sendMessage(data.message);
  });
});

var sendMessage = function(message) {
      io.sockets.emit('server-message', {message: message});
}
        <script src="/socket.io/socket.io.js"></script>
        <script>
            var socket = io.connect('http://localhost');

            socket.on('server-message', function (data) {
                var history = $('#chatbox').val();

                $('#chatbox').val(history + "\n" + data.message)
            });


            $("#write").keyup(function(event){
                if(event.keyCode == 13){
                    socket.emit('user-message', {message: $(this).val()});
                    $(this).val('');
                }
            });
        </script>

var socket=io.connect('http://localhost');
socket.on('server-message',函数(数据){
var history=$(“#聊天室”).val();
$('#chatbox').val(历史+“\n”+数据.message)
});
$(“#写入”).keyup(函数(事件){
如果(event.keyCode==13){
emit('user-message',{message:$(this.val()});
$(this.val(“”);
}
});

您可以使用
socket.broadcast.emit
向所有其他套接字发送消息

io.sockets.on('connection', function (socket) {
    socket.on('user-message', function (data) {
        console.log(data);
        sendMessage.call(socket, data.message);
    });
});
var sendMessage = function(message) {
      this.emit('server-message', {message: message});
      this.broadcast.emit('server-message', {message: message});
}

恐怕也没用。只要把它寄回给最先寄来的人就行了。实际上我以前试过广播,认为io.sockets.emit会有帮助,因为它都是sockets。@cubsink您在单个套接字上调用了
broadcast.emit
?我不这么认为,我复制了您的代码。我已尝试将其更改为io.sockets。@cubsink尝试将您的
io.sockets.on
call和
sendMessage
函数替换为我在答案中找到的函数,看看是否有效。现在发现问题了。。我不认为我的代码有什么问题。客户端与localhost连接,我在后台安装了一台服务器,但没有注意到。因为我先在那里试过,然后我把我所有的代码移到我的另一台服务器上,继续使用一些功能,以便其他服务器可以加入。该死,真是个讨厌的错误。