2011-06-27 31 views
37

¿Hay un cliente C# que siga el protocolo socket.io? Tengo un servidor socket.io que se está comunicando con un cliente de socket.io javascript a través de un sitio web, pero también necesito conectarle un C# pieza que pueda enviar y recibir mensajes. ¿Hay una manera limpia de hacer esto actualmente o tendré que escribir mi propio cliente?Comunicándose con un servidor socket.io a través de C#

+0

posible duplicado de [? ¿Hay un cliente WebSocket implementado para .NET] (http://stackoverflow.com/questions/2064641/is-there-a-websocket-client -implemented-for-net) – jgauffin

+3

@jgauffin, no realmente, ya que socket.io se mezcla en su propia salsa secreta también. –

+0

Parece que al menos una parte de socket.io.js debería volver a escribirse en .NET para que funcione. Intenté jugar con WebSocket4Net como punto de partida, pero parece que aún queda mucho por hacer. – tofutim

Respuesta

40

Hay un proyecto en codeplex (NuGet también) que es un cliente C# para socket.io. (Yo soy el autor de este proyecto, por lo que soy parcial) No pude encontrar exactamente lo que necesitaba en un cliente, así que lo construí y lo liberé nuevamente.

Ejemplo estilo cliente:

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

No puedo esperar para intentarlo. Gracias – Dested

+0

Wahooo! Gracias Jim, voy a dar un giro esta noche! Sábado por la tarde planeado Soy demasiado genial. ¿Esto está en github? ¿Esta búsqueda también encontraría en el perfil del cliente 4.0? –

+0

Jim, ¡tu biblioteca simplemente se mece! Esto solucionó muchos problemas que tenía que conectar una impresora local con una aplicación de nodo en la nube. – coffekid

-1

Esto depende de cómo se ve su servidor web. En algunos casos, podría ser aplicable también hacer un oyente para tomas regulares.
De lo contrario, probablemente tendrá que hacer su propio cliente. Sin embargo, probablemente solo necesite implementar el transporte WebSocket, por lo que debería ser bastante sencillo de todos modos.

Por lo que vale, sugeriría que mirase la pregunta "Is there a WebSocket client implemented for .NET?" y my (fairly simple) WebSocket Socket.IO transport client implementation for Java.

+0

Idealmente estoy buscando un contenedor del cliente socket.io escrito en C#. Puedo escribir un servidor web socket, el problema es el protocolo socket.io. – Dested

+0

@Dested, entonces le sugiero que eche un vistazo a los enlaces que proporcioné. –

20

Usar la siguiente biblioteca: https://github.com/sta/websocket-sharp Está disponible a través de NuGet:

PM> Install-Package WebSocketSharp -Pre

Para conectarse a un Socket.IO 1,0 + servidor, utilice el sintaxis siguiente:

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 otras palabras, añada esto al localhost: puerto - "socket.io/?EIO=2 & transport = websocket".

Mi código de servidor completo: https://gist.github.com/anonymous/574133a15f7faf39fdb5

+4

Esto ahora debe considerarse la respuesta aceptada, ya que websocket-sharp será mucho más confiable que los proyectos anteriores. – user3791372

Cuestiones relacionadas