2017-05-12 12 views
1

C#で記述された単純なTCPサーバーがあり、指定した間隔でデータをpingしてNodeJSアプリケーションがあるデータを受信して​​います。イベント名を使用したNetworkStream write()

私はそうのようなNetworkStreamからデータを送信し、現在のよ:

private NetworkStream nwStream; 
nwStream = clientMachine.GetStream(); 

nwStream.Write(buffer, 0, buffer.Length); // Inside a loop 

などNodeJSでそれを受け取る:

client.on('data', (data) => {

は異なるイベントを放出する方法はあります、私のC#TCPサーバーのdata以外のものはありますか? Socket.ioを使用して私はsocket.emit('customEvent', someData)を受け取り、socket.on('customEvent', receivedData)のように受け取りますが、これをC#で達成できるかどうかはわかりません。

私はSocket.ioで作業していません。上記は、私が達成したい動作の例です。

+0

socket.ioと話しているなら、socket.ioプロトコルを尊重する必要があります:https://github.com/socketio/socket.io-protocol - おそらくカスタムイベントをエンコードする方法を教えてくれます名前 –

+0

私はソケットに話していません、それは私が知っている動作の例にすぎません。私はC#で 'NetworkStream'を、ノードで' net.Socket() 'を使っています。 –

+0

両端でrawソケットを使用している場合は、各論理フレームに名前を埋め込む独自のプロトコルを設計する必要があります... TCPソケット自体にはこのようなメカニズムはなく、未加工パケットもありません –

答えて

1

両端でrawソケットを使用している場合は、各論理フレームに名前を埋め込む独自のプロトコルを設計するだけで済みます... TCPソケット自体には、このようなメカニズムはなく、rawパケット。あなたのイベント名は、改行/改行が含まれる場合があります場合は、あなたがイベントのためのペイロード長さ/ペイロードアプローチを使用する必要があるだろう

{Event name, UTF8}\r\n{length, 4 bytes little endian integer}{payload, length bytes} 

:これを行うの

典型的な/簡単な方法は、のようなものかもしれません名前も。

1

Socket.IOのネットワークプロトコルはhereです。 'socket.io-parser'のencodeAsString(obj)関数があなたが探しているものかもしれません。

関連する問題