gpt4 book ai didi

node.js - socket.io 客户端未接收来自服务器的广播

转载 作者:太空宇宙 更新时间:2023-11-04 01:06:19 24 4
gpt4 key购买 nike

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

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

关于node.js - socket.io 客户端未接收来自服务器的广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22637991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com