Cheetah: Keeping track of multiple connected clients

aberba via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue May 16 14:56:16 PDT 2017


On Tuesday, 16 May 2017 at 17:49:07 UTC, bauss wrote:
> On Tuesday, 16 May 2017 at 16:01:49 UTC, aberba wrote:
>> Does anyone know how to keep track of multiple clients in 
>> Cheetah socket lib such that one can directly message a client 
>> or broadcast to all connected clients.
>>
>>
>> Something like:
>>
>> onMessage(... e)
>> {
>> ...
>>    // send to all
>>    e.clients.broadcast (message);
>>
>> ...OR...
>>    // target a client
>>     e.clients[clientID].send(message);
>> }
>>
>> Or any D lib with similar function.
>
> I have now added an internal client-storage to the project.
>
> The server will have a getClientById(size_t) and a getClients() 
> which can be used.
>
> Ex.
>
> foreach (client; e.server.getClients())  {
>     // ... Broadcast to each client here
> }
>
> ...
>
> e.server.getClientById(clientId).send(...);
>
> Each client will be attached to a clientId when they connect.
>
> The client id is a property of the SocketClient class.
>
> To enable the internal storage you must set storeClients to 
> true on the server when initializing it, otherwise the storage 
> won't be used.
>
> Ex.
>
> server.storeClients = true;
>
> If you don't want to get latest version of it, then you can 
> just make your own storage ex. an associative array and then 
> add each client to it when they connect.
>
> Right now dub doesn't seem to be able to trigger a manual 
> update on the package, so you might have to fetch the updates 
> manually from the Github repository.
>
> https://github.com/bausshf/cheetah/commit/9646fd407d274a94c37dc1b0297541963aeb3e6d

It really awesome the way you responded quickly. About targeting 
a client, suppose I have clients A, B, and C.

Message can be broadcast to all using above solution. But in case 
A want to sent message to B and not C, how does server detect the 
specific destination client's id? Does client.send(...) allow 
json string with target id from browser client?

I'm trying to find a way to receive meesage in one language along 
with target client's id and send to the target after I have 
translated to another lang.


More information about the Digitalmars-d-learn mailing list