2016-04-20 52 views
0

我正在創建一個套接字應用程序,它能夠從網頁內的websocket接收字符串。我已經能夠成功地將WebSocket連接到我的C#程序,但是當網頁向程序發送字符串時,它似乎以某種方式被加密或哈希。HTML 5 - C#Websocket響應

例如,如果網頁發送「測試」,程序將輸出「??? 9uu?\」。我顯然在這裏錯過了一步,我不確定我應該尋找什麼來解決這個問題。我猜字符串必須被解密或者通過一個特定的函數與TCP鍵來獲取實際的字符串?

下面的代碼是負責從HTML接收的字符串,(兩者「數據」和「MyWriter」輸出相同的字符串)的部分:

while (true)  
{ 
    CollectedBytes = new byte[128]; 
    stream.Read(CollectedBytes, 0, CollectedBytes.Length); 
    string Data = Encoding.ASCII.GetString(CollectedBytes, 0, CollectedBytes.Length); 

    Output.Speak("Message: " + Data); 

    StringWriter MyWriter = new StringWriter(); 
    HttpUtility.HtmlDecode(Data, MyWriter); 

    Output.Speak("Message: " + MyWriter.ToString()); 

    // The word "Test" should output here 
    // But instead "???9uu?\" is. 
} 

我假設我缺少一個簡單的步驟,但我已經到處尋找,似乎無法找到任何東西來幫助我!如果任何人都可以給我指導,我應該做什麼,這將是偉大的:)

在此先感謝。

+0

也許你的數據的編碼不是ASCII。你有沒有試過UTF8或UTF16? – Eser

+0

我現在就去試試看,我相信我試過了UTF8,但沒有試過UTF16。我會回報 – Waldy

+0

我只是嘗試將數據的編碼更改爲每種可用類型,它們都輸出一種類似於以前的加密或編碼文本......我真的覺得我錯過了每一個簡單的東西只是不知道要搜索什麼來解決這個問題。 – Waldy

回答

0

您是否試圖手動解碼數據而不使用任何WebSocket庫?如果是這樣,您必須知道來自客戶端的WebSocket幀的有效載荷部分是蒙面。見RFC 6455, 5.3. Client-to-Server Masking