2017-04-19 93 views
0

我需要知道給定名稱空間和空間中給定的socket.emit()和相應的socket.on()的當前套接字ID和該套接字的索引,但是我找不到如何在socket.io文檔中執行此操作。獲取發射套接字的當前套接字ID

例如:

客戶

socket.emit('myMessage', myVar); 

服務器

socket.on('myMessage', function(myVar){ 
    //Need the socket id of the client who just emitted 
    //and whether or not they are the first socket, second socket, third socket, etc. 
    // e.g. something like: 

    currentSocketID = io.socket.connected[socketid]; //?? what is the correct syntax? 
    currentSocketIndex = io.socket.connected[index[i]]; //?? what is correct syntax? 

}); 

這不是How can I get the socket ID from an event in Socket.io?重複,因爲我特別需要評估誰是第一插座,第二插座等,然後根據這些信息執行一些操作。您鏈接的堆棧只是解釋瞭如何處理新郵件,這不是我的問題。我需要處理一條新消息,並顯示發射器的實際套接字ID和套接字索引。

+0

可能重複[如何從Socket.io中的事件獲取套接字ID](http://stackoverflow.com/questions/26725488/how-can-i-get-the-socket-id- from-an-an-in-socket-io) – luisenrike

+0

@luisenrike - 這不是重複的,因爲我特別需要評估誰是第一個套接字,第二個套接字等,然後根據這些信息執行一些操作。您鏈接的堆棧只是解釋瞭如何處理新郵件,這不是我的問題。我需要處理一條新消息,並顯示發射器的實際套接字ID和套接字索引。 – Dshiz

回答

2

在此代碼回調:

socket.on('myMessage', function(myVar){ 
    // can just use socket.id 
}); 

我假設是可能裏面是這樣的:

io.on('connection', function(socket) { 
    socket.on('myMessage', function(myVar){ 
     // can just use socket.id 
    }); 
}); 

你有socket對象發出的消息客戶端(socket變量可能仍在範圍內),因此您可以直接訪問socket.id以獲取該套接字的ID。

你還問一個index,但你不說什麼的索引? socket.io中有各種數據結構,用於跟蹤房間和命名空間中的套接字列表。有些是數組(所以他們會有訂單),有些是地圖(所以他們沒有訂單)。據我所知,socket.io沒有提供關於跟蹤房間或命名空間中某些套接字順序的任何文檔。如果您更詳細地解釋您想要使用索引做什麼,我們可能會告訴您更多關於現有數據結構可能爲您工作的信息或建議您如何自己跟蹤此訂單。