2017-06-21 55 views
0

我剛開始學習websocket,所以如果我說的話沒有意義,那可能就是爲什麼。我瞭解他們如何工作的基本知識。客戶端可以向服務器發送消息,反之亦然。我的問題是,如果你想讓客戶端能夠使用相同的連接用於不同的目的。例如,如果客戶可以發送消息或在遊戲中移動他們的角色會發生什麼。你需要單獨的套接字來處理這些情況嗎?我想你可以爲你的消息創建一個標準,然後在服務器上有一個switch語句,但是這看起來不夠好。如果有關係,我正在使用Node的服務器「express-ws」包。謝謝您的幫助!用於多種用途的Websocket連接

回答

0

你的直覺是正確的。通常你會構造一個標準的消息格式,它具有一個指示消息類型的屬性。

您不必在服務器上使用switch語句。如果你願意,你可以創建一個eventEmitter,並將每個傳入消息創建爲與消息類型相同的eventName。然後,你的服務器代碼只會註冊監聽器,聽聽他想聽的任何消息,並且你會避免使用switch語句。這也可以讓你的服務器代碼在模塊中更加劃分。您只需分享eventEmitter,即任何希望偵聽傳入消息或發送傳出消息的模塊。

僅供參考,socket.io是一個位於webSocket之上的客戶端和服務器層,併爲您執行所有這些(以及其他一些功能)。有一部分socket.io的功能在這裏:Moving from socket.io to raw websockets?