2016-06-01 97 views
1

我使用python SimpleWebSocketServer,修改了SimpleExample.py和Chrome。我發送字符串從Python到瀏覽器,我沒有最隱祕的想法如何將接收到的ArrayBuffer(或Blob,如果配置如此)轉換爲javascript字符串。通過websocket從ArrayBuffer接收字符串

Python代碼:

def handleConnected(self): 
    with open("roads.txt") as roadsfile: 
     content = "" + roadsfile.read() 
     self.sendMessage(content) 

瀏覽器代碼:

function doConnect() { 
     websocket = new WebSocket("ws://localhost:8000/"); 
     websocket.binaryType = 'arraybuffer'; 
     websocket.onmessage = function(event) { onMessage(event) }; 
    } 

    function onMessage(event) { 
     console.log(event.data); 
    } 

,什麼是得到記錄只是ArrayBuffer{},看來是空的,我猜。

我不知道如何處理這個ArrayBuffer做,既不是如何檢查的有效性。

順便說一句,來自roads.txt的文件內容是基於文本的浮動的一個很長的行,類似於.csv,所以如果我可以將它們編碼爲實際的二進制數組,則更好!

+0

這可能有所幫助:https://developers.google.com/web/updates/2012/06/How-to-convert-ArrayBuffer-to-and-from-String?hl = zh_CN – ErikR

+0

可能會忽略'websocket .binaryType ='arraybuffer';'看看你是否可以得到一個普通的字符串。 – domoarrigato

+0

@domoarrigato,現在我在'console.log'上得到'Blob {size:70127,type:「」}'' – heltonbiker

回答

0

試試這個 - 回去接收消息作爲arraybuffer,並應用這樣的事情做一個字符串:

function ab2str(buf) { 
    return String.fromCharCode.apply(null, new Uint16Array(buf)); 
} 

function onMessage(event) { 
    console.log(ab2str(event.data)); 
} 

這個假定您發送的是UTF-8編碼的字符串。

+0

申請接收它的解決方案我試過了,但現在控制檯日誌是空的(空白)。 – heltonbiker