繁体   English   中英

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

[英]socket.io client not receiving broadcasts from server

我正在制作一个即时消息聊天应用程序,但是在让客户端从服务器接收数据时遇到了问题。 谁能向我解释为什么会这样?

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>

你知道广播是什么吗? 当您由于套接字的事件广播消息时,该消息会发送给所有已连接的客户端,但触发该事件的套接字除外。 你的情况也一样。 如果要向连接的客户端发出names事件,请使用

socket.emit("names", name); 在您的app.js中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM