1
我在製作中有一個即時消息聊天應用程序,並且在讓我的客戶端從我的服務器接收數據時遇到問題。有誰能向我解釋爲什麼會發生這種情況嗎?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.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>
我看到使用
socket.emit("names", name);
。我正在使用廣播,因爲這是CodeSchool的node.js課程視頻中使用的人。感謝您向我解釋其真正的功能,我一定會記住它的未來。 –我能理解。假設您在瀏覽器的3個選項卡中打開了index.html,它們是3個連接的客戶端。現在,如果您使用client.broadcast.emit,並且您從客戶端觸發「加入」,則會向剩餘的其他兩個客戶端觸發「名稱」事件。 –