2012-05-16 19 views
5

Tôi cần một máy chủ nodejs kết nối với một ứng dụng C#, tôi không thích sử dụng thư viện của bên thứ ba, vì vậy tôi đã cố gắng sử dụng một TcpClient, máy chủ là một cái gì đó như thế này :tcp client với socket.io (nodejs)

var io = require('socket.io').listen(8000); 
io.socket.on('connection',function(socket) 
{ 
console.log("connected"); 
} 

và trên C# dự án:

var client = new TcpClient(Server,8000); 
Socket s = client.Client; 
if (!s.Connected) 
{ 
    s.SetSocketOption(SocketOptionLevel.Socket, 
    SocketOptionName.ReceiveBuffer, 16384); 
    MessageBox.Show("disconnected"); 
} 
else 
{ 
    MessageBox.Show("connected"); 
    s.Send(Encoding.UTF8.GetBytes("something")); 
} 

cho những gì tôi hiểu về "something" tôi nên viết cái gì đó sẽ kích hoạt "trên ('kết nối')" ở phía bên nodejs, là tôi thiếu cái gì?

PS: nếu bạn biết một thư viện của bên thứ ba tốt cho những gì tôi cần bạn có thể đề cập đến nó

+2

không thích sử dụng thư viện của bên thứ ba thưởng thức phát minh lại bánh xe. Ở đó, FTFY;) –

+0

true: P, nhưng tôi muốn cố gắng làm sạch càng tốt, nếu ví dụ, vấn đề của tôi chỉ là: "connection: {data: value}", và nó hoạt động tốt, tôi không cần thư viện của bên thứ ba ... nhưng nếu tôi cần viết một cuốn sách, tôi sẽ nghĩ về các thư viện của bên thứ ba;). tôi thích biết làm thế nào nó có thể làm việc trước khi sử dụng các công cụ của bên thứ ba. – Joaolvcm

+0

Không phải node.js là giao thức dựa trên HTTP phải không? Hay nó hỗ trợ lập trình cấp socket? Nếu chỉ HTTP, bạn sẽ phải gửi các yêu cầu HTTP thay vì chỉ ghi dữ liệu vào socket. –

Trả lời

0

Trên thực tế, các máy chủ trên ('kết nối') nên bắn vào thời điểm đó bạn xây dựng đối tượng TcpClient của bạn bởi vì đó là khi kết nối xảy ra, thay vì tại thời điểm bạn cố gắng gửi một số dữ liệu.

+1

'MessageBox.Show (" connected ");' đang kích hoạt khi máy chủ socket.io đang chạy, nhưng 'on ('connetion')' không phải là – Joaolvcm