您好,我的服务器上有一个计数器,用于记录有多少人已连接。因此,每当用户连接时,我想向他发送用户数量。问题是,当用户连接时,他发送套接字并且服务器接收它。但是当服务器发送带有用户数量的套接字时,客户端不会收到此消息。
我在使用socket.broadcast.emit时遇到这个问题。如果我使用 socket.emit 我确实收到了它。
Server.js
socket.on('update', function () {
console.log('Update', users)
socket.broadcast.emit('user',users) //Doesn't work
socket.emit('user', users) // Works
})
Index.js
$(document).ready(function() {
var users = 0
var socket = io()
.
.
.
socket.on('user', changeUsers)
socket.emit('update');
.
.
.
最佳答案
广播意味着向除启动消息的套接字之外的其他所有人发送消息。
因此连接的用户将不会收到广播。
这可能有助于解决以下问题:
发送和接收事件
Socket.IO 允许您发出和接收自定义事件。除了连接、消息和断开连接之外,您还可以发出自定义事件:
服务器:
// note, io(<port>) will create a http server for you
var io = require('socket.io')(80);
io.on('connection', function (socket) {
io.emit('this', { will: 'be received by everyone'});
socket.on('private message', function (from, msg) {
console.log('I received a private message by ', from, ' saying ', msg);
});
socket.on('disconnect', function () {
io.emit('user disconnected');
});
});
关于javascript - 为什么在这种情况下我不能使用 socket.emit.broadcast ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37899260/