Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Stratégie de ressources

1 réponse
Avatar
paratge
Bonjour,

Je dois créer un relais sur le serveur entre différents utilisateurs
connectés derrière un routeur. Pour ce faire, je dois conserver leurs
sockets initiales ouvertes et les relier à leurs sockets de destinations
(qui peuvent être multiples).

Je vois 3 solutions, mais j'ai du mal à évaluer ce qu'elles représentent
en termes de ressources pour le serveur et aussi en délai de temps du
fait qu'il peut y avoir à gérer plus de 10000 connexions simultanées.

1- je crée un tableau dynamique de 2 chaines (socket initiale - socket
destination) je cherche dans le tableau la socket destination, je copie
le message de la socket initiale que j'écrie dans la destination. Au
message de deconnexion je supprime la ligne du tableau.le problème c'est
qu'à la réponse la socket destination devient la socket initiale, donc
gestion des doublons épineuse.

2 - je crée autant de tableaux que de connexions et l'intègre dans la
socket le nom du tableau pour retrouver la socket de destination. je
pense que c'est très moyen.

3- je crée un fichier hf avec le nom de la socket initiale et le socket
destination et j'intègre sans la socket le hNumEnr lors de la création
de la ligne et je fais un hlit() à chaque message et je copie le message
de l'une dans l'autre, avec suppression de la ligne à la fermeture d'une
des 2 sockets.

C'est tout ce que j'ai trouvé pour interconnecter 2 sockets, si vous
pensez qu'il y a mieux, je suis preneur...

Merci d'avance pour votre temps.

1 réponse

Avatar
paratge
paratge a écrit :
Bonjour,

Je dois créer un relais sur le serveur entre différents utilisateurs
connectés derrière un routeur. Pour ce faire, je dois conserver leurs
sockets initiales ouvertes et les relier à leurs sockets de destinations
(qui peuvent être multiples).

Je vois 3 solutions, mais j'ai du mal à évaluer ce qu'elles représentent
en termes de ressources pour le serveur et aussi en délai de temps du
fait qu'il peut y avoir à gérer plus de 10000 connexions simultanées.

1- je crée un tableau dynamique de 2 chaines (socket initiale - socket
destination) je cherche dans le tableau la socket destination, je copie
le message de la socket initiale que j'écrie dans la destination. Au
message de deconnexion je supprime la ligne du tableau.le problème c'est
qu'à la réponse la socket destination devient la socket initiale, donc
gestion des doublons épineuse.

2 - je crée autant de tableaux que de connexions et l'intègre dans la
socket le nom du tableau pour retrouver la socket de destination. je
pense que c'est très moyen.

3- je crée un fichier hf avec le nom de la socket initiale et le socket
destination et j'intègre sans la socket le hNumEnr lors de la création
de la ligne et je fais un hlit() à chaque message et je copie le message
de l'une dans l'autre, avec suppression de la ligne à la fermeture d'une
des 2 sockets.

C'est tout ce que j'ai trouvé pour interconnecter 2 sockets, si vous
pensez qu'il y a mieux, je suis preneur...

Merci d'avance pour votre temps.



Je me reponds car je pense avoir trouvé plus simple :

Lorsqu'un correspondant se connecte, je met à jour son profil en
rajoutant le nom de sa socket.
j'envoie à tous ses correspondants son profil y compris le nom de sa
socket, de ce fait si un de ses correspondants souhaite le joindre, il
envoie dans son message le nom de la socket destination, que le serveur
utilise pour relayer le message.

Qu'en pensez vous ?