Navigation

    Colyseus
    • Login
    • Search
    • Recent
    • Tags
    • Users
    1. Home
    2. lyh1091106900
    lyh1091106900

    lyh1091106900

    @lyh1091106900

    Chat Follow Unfollow
    1
    Reputation
    12
    Posts
    1057
    Profile views
    0
    Followers
    0
    Following
    Joined Last Online

    • Profile
    • More
      • Continue chat with lyh1091106900
      • Flag Profile
      • Following
      • Followers
      • Topics
      • Posts
      • Best
      • Groups
    lyh1091106900 Follow

    Posts made by lyh1091106900

    RE: 关于本地环境下缩放单元测试可能遇到的席位过期问题

    感谢教程,有所帮助

    posted in 中文 •
    broadcast Mechanism Question

    All I know is in colyseus sever different player can live in different proccessId sever,with redispresence they can communicate。when I read soucecode in Room.ts about broadcast,I find it just sent message to clients of Room instance,I think Room instance is totally Independent of other proccessId sever。so it is confuse for me that without ipc call how can I call make a broadcast to send mssage to everyone.
    the code follow :

    broadcast(typeOrSchema, messageOrOptions, options) {
        const isSchema = (typeof (typeOrSchema) === 'object');
        const opts = ((isSchema) ? messageOrOptions : options);
        if (opts && opts.afterNextPatch) {
            delete opts.afterNextPatch;
            this._afterNextPatchQueue.push(['broadcast', arguments]);
            return;
        }
        if (isSchema) {
            this.broadcastMessageSchema(typeOrSchema, opts);
        }
        else {
            this.broadcastMessageType(typeOrSchema, messageOrOptions, opts);
        }
    }
    
    broadcastMessageSchema(message, options = {}) {
        const encodedMessage = Protocol.getMessageBytes[Protocol.Protocol.ROOM_DATA_SCHEMA](message);
        let numClients = this.clients.length;
        while (numClients--) {
            const client = this.clients[numClients];
            if (options.except !== client) {
                client.enqueueRaw(encodedMessage);
            }
        }
    }
    broadcastMessageType(type, message, options = {}) {
        const encodedMessage = Protocol.getMessageBytes[Protocol.Protocol.ROOM_DATA](type, message);
        let numClients = this.clients.length;
        while (numClients--) {
            const client = this.clients[numClients];
            if (options.except !== client) {
                client.enqueueRaw(encodedMessage);
            }
        }
    }
    posted in General Discussion •