Node.js socket.io客户端未从服务器接收广播

Node.js socket.io客户端未从服务器接收广播,node.js,socket.io,Node.js,Socket.io,我正在开发一个即时消息聊天应用程序,在让客户端从服务器接收数据时遇到问题。有人能解释一下为什么会发生这种情况吗 app.js var http = require("http"); var express = require("express"); var socket = require("socket.io"); var app = express(); app.use(express.static(__dirname + "/public")); var server = http.cr

我正在开发一个即时消息聊天应用程序,在让客户端从服务器接收数据时遇到问题。有人能解释一下为什么会发生这种情况吗

app.js

var http = require("http");
var express = require("express");
var socket = require("socket.io");

var app = express();
app.use(express.static(__dirname + "/public"));
var server = http.createServer(app);
server.listen(8080);
var io = socket.listen(server);

io.sockets.on("connection", function(client) {
    client.on("join", function(name) {
        client.set("nickname", name);
        console.log(name + " connected."); // logs name correctly
        client.broadcast.emit("names", name);
    });
});
index.html

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <script src="/socket.io/socket.io.js"></script>
        <script type="text/javascript">
            var server = io.connect("http://localhost:8080");

            server.on("connect", function(data) {
                nickname = "";
                while (nickname == null || nickname.trim() == "") {
                    nickname = prompt("Enter name");
                }
                server.emit("join", nickname);
            });

            server.on("names", function(data) {
                document.getElementById("txtNames").value = data;
            });
        </script>
    </head>
    <body>
        <textarea id="txtNames"></textarea>
    </body>
</html>


var server=io.connect(“http://localhost:8080");
服务器上(“连接”,功能(数据){
昵称=”;
while(昵称==null | |昵称.trim()==“”){
昵称=提示(“输入名称”);
}
emit(“join”,昵称);
});
server.on(“名称”,函数(数据){
document.getElementById(“txtNames”).value=数据;
});

你知道什么是广播吗?当您因套接字中的事件而广播消息时,该消息将发送到所有连接的客户端,但触发该事件的套接字除外。你的情况也是如此。如果要向连接的客户端发送
名称
事件,请使用


socket.emit(“名称”,名称)在你的app.js中

我明白了。我之所以使用广播,是因为CodeSchool的node.js课程视频中的家伙就是这么用的。谢谢你向我解释它的真正功能,我一定会记住它的。我能理解。假设您在浏览器的3个选项卡中打开了index.html,则这是3个连接的客户端。现在,如果您使用client.broadcast.emit并从一个客户端触发“join”,那么“names”事件将被激发到其余两个客户端。