2011-06-27 7 views
37

Có một máy khách C# nào tuân theo giao thức socket.io không? Tôi có một máy chủ socket.io đó là giao tiếp với một khách hàng javascript socket.io thông qua một trang web, nhưng tôi cũng cần phải kết nối một mảnh C# để nó có thể gửi và nhận tin nhắn. Có một cách sạch sẽ để làm điều này hiện tại hoặc tôi sẽ phải viết khách hàng của riêng tôi.Giao tiếp với máy chủ socket.io qua C#

+0

thể trùng lặp của [? Có một khách hàng WebSocket thực hiện cho .NET] (http://stackoverflow.com/questions/2064641/is-there-a-websocket-client -implemented-for-net) – jgauffin

+3

@jgauffin, không thực sự, như socket.io trộn lẫn trong nước sốt bí mật của nó quá. –

+0

Dường như ít nhất một số phần của socket.io.js sẽ phải được viết lại trong .NET để làm việc. Tôi đã thử thách với WebSocket4Net như là một điểm khởi đầu, nhưng có vẻ như vẫn còn một cách để đi. – tofutim

Trả lời

40

Có một dự án trên codeplex (NuGet) là một khách hàng C# cho socket.io. (Tôi là tác giả của dự án này - vì vậy tôi thiên vị) Tôi không thể tìm thấy chính xác những gì tôi cần trong một khách hàng, vì vậy tôi xây dựng nó và phát hành nó trở lại vào mở.

Ví dụ khách hàng phong cách:

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

Tôi không thể đợi để thử. Cảm ơn – Dested

+0

Wahooo! Cảm ơn Jim, tôi sẽ cung cấp cho điều này một whirl tối nay! Buổi tối thứ bảy đã lên kế hoạch Tôi rất tuyệt. Đây có phải là github không? Ngoài ra sẽ chạy này tìm thấy trên hồ sơ khách hàng 4.0? –

+0

Jim, thư viện của bạn chỉ đơn giản là đá! Điều này giải quyết được rất nhiều vấn đề tôi phải kết nối với một máy in cục bộ bằng một ứng dụng nút đám mây. – coffekid

-1

Điều này tùy thuộc vào cách máy chủ web của bạn trông như thế nào. Trong một số trường hợp, nó có thể được áp dụng để làm cho một người nghe cho các ổ cắm thông thường quá.
Nếu không, bạn có thể sẽ phải tạo ứng dụng khách của riêng mình. Tuy nhiên, có thể bạn sẽ chỉ cần thực hiện việc vận chuyển WebSocket vì vậy nó sẽ khá đơn giản.

Đối với những gì đáng giá, tôi khuyên bạn nên xem câu hỏi "Is there a WebSocket client implemented for .NET?" và my (fairly simple) WebSocket Socket.IO transport client implementation for Java.

+0

Lý tưởng nhất là tìm kiếm một trình bao bọc của trình khách socket.io được viết bằng C#. Tôi có thể viết một máy chủ web socket, vấn đề là giao thức socket.io. – Dested

+0

@Dested, Sau đó, tôi khuyên bạn nên xem qua các liên kết tôi đã cung cấp. –

20

Sử dụng các thư viện sau: https://github.com/sta/websocket-sharp Nó có sẵn thông qua NuGet:

PM> Install-Package WebSocketSharp -Pre

Để kết nối với một Socket.IO 1.0 + máy chủ, sử dụng cú pháp sau:

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); 
} 

Nói cách khác, gắn thêm vào localhost: port - "socket.io/?EIO=2 & transport = websocket".

đầy đủ mã máy chủ của tôi: https://gist.github.com/anonymous/574133a15f7faf39fdb5

+4

Điều này bây giờ sẽ được coi là câu trả lời được chấp nhận vì websocket-sharp sẽ đáng tin cậy hơn nhiều so với các dự án cũ ở trên. – user3791372