2011-11-21 66 views
1

我發現了一個很棒的websocket教程。如果服務器收到消息,則服務器將其解碼並寫入控制檯,然後服務器將其發送回客戶端。node.js websocket發送自定義數據

var firstByte = data[0], 
     secondByte = data[1]; 

    if(!(firstByte & 0x81)) socket.end(); 
    if(!(secondByte & 0x80)) socket.end(); 

    var length = secondByte & 0x7f; 

    if(length < 126){ 
    var mask = data.slice(2,6); 
    var text = data.slice(6); 
    } 

    if(length == 126){ 
    var mask = data.slice(4,8); 
    var text = data.slice(8); 
    } 

    var unMaskedText = new Buffer(text.length); 
    for(var i=0;i<text.length;i++){ 
     unMaskedText[i] = text[i]^mask[i%4]; 
    } 

    console.log(unMaskedText.toString()); 

    if(unMaskedText.length > 125) 
    var newFrame = new Buffer(4); 
    else 
    var newFrame = new Buffer(2); 

    newFrame[0] = 0x81; 

    if(unMaskedText.length > 125){ 

    newFrame[1] = 126; 

    var length = unMaskedText.length; 

    newFrame[2] = length >> 8; 
    newFrame[3] = length & 0xFF; //1111 1111 


    } else { 

    newFrame[1] = unMaskedText.length; 

    socket.write(newFrame, 'binary'); 
    socket.write(unMaskedText, 'utf8'); 
    } 

它的工作原理,但我想發送自定義消息,而不僅僅是客戶端發送給我。

+0

也許你覺得這個維基答案很有趣:http://stackoverflow.com/questions/8125507/how-can-i-send-and-receive-websocket-messages。 – pimvdb

+0

但我在代碼中修改了什麼? – Uw001

+0

看着它,爲什麼你不能發送比'unMaskedText'更好的東西呢?例如。在進行發送計算之前只需覆蓋'unMaskedText'。 – pimvdb

回答

1

爲了清楚起見,我會將其作爲回答發佈。

在顯示接收到的數據之後但在計算髮送數據之前,您應該將unMaskedText更改爲表示要發送的文本的緩衝區。例如。

unMaskedText = new Buffer("test"); 
相關問題