2017-10-18 4 views
0

私はソケットクライアントを作成してjsonファイルのソケットを見る必要があるC#の小さなプロジェクトに取り組んでいます。WebSocketSharpがソケットを開いて受信データを読み取ろうとしています

は、私はいくつかのことを試してみましたし、私はプロジェクトを実行するたびに、私はエラーを取得する:

PM|Fatal|StackBuilderSink._PrivateProcessMessage|WebSocketSharp.WebSocketExceptio n: An exception has occurred while reading an HTTP request/response. ---> System.IO.EndOfStreamException: The header cannot be read from the data source.

いくつかの背景。私はnode.jsとsocket.ioを使ってJsonファイルを読み込み、io.emitを使ってデータをテストしています。私はデータが正しくフォーマットされていることを知っている私は、データを見て、それを持っているHTML/Javaのスクリプトページがあります。

public MainWindow() 
{ 
    InitializeComponent(); 

    using (var ws = new WebSocket("ws://127.0.0.1:8889")) 
    { 
     ws.OnMessage += (sender, e) => 
       json_output.Text = (e.Data); 

     ws.ConnectAsync(); 
    } 
} 
+0

私の問題は、私のテストサーバーとこれが動作するライブサーバーがハンドシェイクを提供しないということです。ハンドシェイクをバイパスし、ソケットフィードを聞く方法はありますか? – Jyeomans

答えて

0

あなたの説明から、普通のjsonファイルをio.emitに送信するとします。ウィキペディアに記載されているように

ハイパーテキスト転送プロトコル(HTTP)は、(HTTP response)respone組み込み期待:

The response message consists of the following:

  • A status line which includes the status code and reason message (e.g., HTTP/1.1 200 OK, which indicates that the client's request
    succeeded).
  • Response header fields (e.g., Content-Type: text/html).
  • An empty line.
  • An optional message body.

したがって空の行に続いて、最初のステータス行とレスポンスヘッダ情報を送信しなければなりません。その後、json-fileの内容をメッセージ本体として送信することができます。

私は、Webサーバーとして動作し、HTTPを処理するnode.js用のライブラリもあるとします。


あなたはプロトコルなしでプレーンなデータ・ストリームを処理したい場合は、WebSocketのようなプロトコル固有のソケットが、TcpListenerような一般的なものを使用すべきではありません。

メッセージ/ファイルの終わりの時のようなプロトコルによって解決すべき問題を解決するために、次に持っているもちろん

...利用可能であるべきである避けるためTcpListenerとpitholesを使用する方法の

例ここではstackoverflowやGoogleのDr.

+0

ですから、問題は私が持っていないのは、ライブテストでjsonファイルを提供しているサーバーが、変更できないサーバーから来ているということです。私はちょうど一致するように私のテストサーバーを構築しました。データのサーバーを監視し、形式を必要としない方法がありますか?基本的に私は閉じられたネットワーク上のデジタルサイネージシステムを使って作業しています。私はちょうど私のシステムでデータフローを中断しようとしており、私はユーザーにデータフィードで何らかの制御を与えました。 – Jyeomans

+0

@人生:あなたのコメントへの回答として拡大回答 –

関連する問題