2016-02-23 19 views
0

我已經使用Socket.io創建了一個使用Node.js的服務器,現在我需要讓一個Python客戶端連接到它。用於Node.js的非事件驅動套接字模塊

麻煩我瞭解Socket.io中的「關鍵字」如何影響此連接。例如,這是怎麼了最初在服務器端完成:

io.on('connection', function(socket){ 

    socket.on('request', function(msg){ 
    console.log(msg); 
    }); 
}); 

這意味着Python客戶端會做這樣的事情(如果我是運行在終端的腳本):

establishConnection 12.12.12.12:3000 'connection' 
//connection established ... 
sendData('request', {data : 'hello'}); 

這是不可取的,而且我需要修改服務器接受沒有關鍵字插座的請求,這樣

establishConnection 12.12.12.12:3000 
//connection established ... 
sendData({data : 'hello'}); 

這是可以做到與Socket.io?

+0

well node.js不是python,但它並不意味着它比Python更復雜,它更簡單一旦你明白了爲什麼它使用回調,並且僞代碼看起來如此簡單,以至於我懷疑這樣的任何東西都可以工作。 您可以通過使用參數定義函數來簡化應用程序,只需將名稱定義爲參數即可使用。看看這個http://callbackhell.com/ – Gntem

+0

@GeoPhoenix我應該指出,如果你在終端中運行腳本,「僞代碼」實際上就是你要執行的東西。另外,我的問題與回調無關。我需要能夠通過套接字進行連接,而無需使用Socket.io中的事件「關鍵字」,如果您有任何其他模塊可以讓我做到這一點,而不是Socket.io,我很樂意看看它。 – martin

回答

0

在api中沒有辦法從socket.io庫中獲取所有包。

要從socket.io獲取所有數據包,您可以執行醜陋的攻擊並覆蓋socketoneventonpacket

像這樣:

socket.onevent = function() { 
    console.log(arguments); 
} 

{ '0':{類型:2,NSP: '/',數據:[ '聊天消息', '平']}}

請注意,這是沒有記錄的,並且不受支持,所以API可能很可能會中斷。