为什么我不能在这种情况下使用socket.emit.broadcast?

时间:2016-06-18 16:35:21

标签: javascript node.js socket.io

您好我的服务器上有一个计数器,显示有多少人已连接。因此,每当用户连接时,我都希望向他发送用户数量。问题是,当用户连接时,他发送套接字并且服务器接收它。但是当服务器发送具有用户数量的套接字时,客户端不会收到此信息。

当我使用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');
.
.
.

1 个答案:

答案 0 :(得分:0)

广播意味着向除了启动它的套接字以外的所有人发送消息。

因此连接用户不会收到广播。

来自socket.io docs

这可能有助于明确:

发送和接收事件

Socket.IO允许您发出和接收自定义事件。除了connect,message和disconnect之外,您还可以发出自定义事件:

服务器:

public static class GameObjectExtensions {
    public static void ObjectLoop<T>(this GameObject value, int uBound, IList<T> list, T item) where T : UnityEngine.Component {
        for (int x = 0; x < uBound; x++) {
            list.Add(GameObject.Instantiate(item) as T);
            list[x].transform.SetParent(value.transform);
            list[x].gameObject.SetActive(false);
        }
    }
}