2011-06-27 8 views
37

Y at-il un client C# qui suit le protocole socket.io? J'ai un serveur socket.io qui communique avec un client javascript socket.io via un site web, mais j'ai aussi besoin de connecter une pièce C# qui peut envoyer et recevoir des messages. Existe-t-il un moyen propre de le faire actuellement ou devrais-je écrire mon propre client.Communiquer avec un serveur socket.io via C#

+0

double possible de [? Y at-il un client WebSocket mis en œuvre pour .NET] (http://stackoverflow.com/questions/2064641/is-there-a-websocket-client -implemented-for-net) – jgauffin

+3

@jgauffin, pas vraiment, car socket.io mélange aussi sa propre sauce secrète. –

+0

Il semblerait qu'au moins une partie de socket.io.js devrait être réécrite en .NET pour que cela fonctionne. J'ai essayé de bidouiller avec WebSocket4Net comme point de départ, mais il semble qu'il y ait encore beaucoup à faire. – tofutim

Répondre

40

Il existe également un projet sur codeplex (NuGet) qui est un client C# pour socket.io. (Je suis l'auteur de ce projet - donc je suis partial) Je ne pouvais pas trouver exactement ce dont j'avais besoin chez un client, alors je l'ai construit et je l'ai rendu public.

Exemple style client:

socket.On("news", (data) => { 
Console.WriteLine(data); 
}); 
+0

Je ne peux pas attendre pour essayer. Merci – Dested

+0

Wahooo! Merci Jim, je vais faire un tourbillon ce soir! Samedi soir Prévu Je suis trop cool. Est-ce sur github? Est-ce que cette exécution serait également trouvée sur le profil client 4.0? –

+0

Jim, votre bibliothèque bascule simplement! Cela a résolu beaucoup de problèmes que j'avais à connecter une imprimante locale avec une application de nœud de nuage. – coffekid

-1

Cela dépend de l'aspect de votre serveur Web. Dans certains cas, il peut être utile de créer un écouteur pour les sockets réguliers.
Sinon, vous devrez probablement créer votre propre client. Cependant, vous n'aurez probablement besoin que d'implémenter le transport WebSocket de sorte qu'il devrait être assez simple de toute façon.

Pour ce que ça vaut, je vous suggère de regarder la question "Is there a WebSocket client implemented for .NET?" et my (fairly simple) WebSocket Socket.IO transport client implementation for Java.

+0

Idéalement je cherche un wrapper du client socket.io écrit en C#. Je peux écrire un serveur Web de socket, le problème est le protocole de socket.io. – Dested

+0

@Dested, Alors je suggère de jeter un oeil sur les liens que j'ai fournis. –

20

Utilisez la bibliothèque suivante: https://github.com/sta/websocket-sharp Il est disponible via NuGet:

PM> Install-Package WebSocketSharp -Pre

Pour vous connecter à un Socket.IO 1.0 + serveur, utilisez le syntaxe suivante:

using (var ws = new WebSocket("ws://127.0.0.1:1337/socket.io/?EIO=2&transport=websocket")) 
{ 
    ws.OnMessage += (sender, e) => 
     Console.WriteLine("New message from controller: " + e.Data); 

    ws.Connect(); 
    Console.ReadKey(true); 
} 

En d'autres termes, ajoutez ceci à l'hôte local: port - "socket.io/?EIO=2 & transport = websocket".

Mon code complet du serveur: https://gist.github.com/anonymous/574133a15f7faf39fdb5

+4

Cela devrait maintenant être considéré comme la réponse acceptée car websocket-sharp sera beaucoup plus fiable que les anciens projets ci-dessus. – user3791372

Questions connexes