我是websockets/socket.io/node.js的新手。我正在嘗試編寫一款紙牌遊戲應用程序,但幾乎所有我找到的示例教程都創建了聊天應用程序。所以我正在努力讓自己的頭腦對這些概念感興趣,以及如何將它們應用到我的紙牌遊戲中。我無法繞過websockets(通過socket.io和node.js)
保持簡單,紙牌遊戲將涉及兩名球員。遊戲涉及在桌子周圍移動牌。每個玩家都必須看到其他玩家的移動(因此需要不斷的連接)。但是對手牌被隱藏到另一個。
因此,兩個人瀏覽到同一張桌子,然後點擊坐下(並且在兩個座位被拿走時玩)。使用
io.on("connection", function(sock){
//socket events in here
});
我在創建一個套接字(「IO」,或「襪子」?),這兩個客戶端和服務器共享,或者是兩個獨立的插座(服務器/客戶端A和服務器/ clientB)?我問,因爲我很難理解發送和/或廣播消息時發生了什麼。如果客戶端發出消息,那麼該消息是發送給服務器還是其他客戶端,還是僅僅發送給服務器?然後,它還會將信息發送給自己嗎?似乎這就是邏輯......或「廣播」方法的目的是什麼?
從功能角度來看,我需要服務器向每個玩家發送不同的消息。所以它不像服務器將聊天發送給每個人的聊天室。但是如果它是我們三個人共享的一個套接字(客戶端和服務器),我該如何管理誰看到了什麼?我已經閱讀了關於命名空間的內容,但我正在努力研究如何使用它。如果它是兩個獨立的套接字,那麼我可以更容易地想象將不同的數據發送到單獨的客戶端。但是,這是如何實現的 - 是兩個'io'對象還是兩個'sock'對象?
最後,我不知道這是否是在這裏被接受的那種冗長的問題,所以如果不是這樣,那麼有人可以指引我參加討論可以發生的論壇嗎?乾杯!
(萬一它很重要我也使用Expressjs作爲服務器)。
編輯補充: 我的困惑的一部分是關於'io'和'襪子'之間的區別。此代碼例如,從socket.io頁面是被應用到其中任何的方法一個很好的例子:
io.on('connection', function(socket){
socket.emit('request', /* */); // emit an event to the socket
io.emit('broadcast', /* */); // emit an event to all connected sockets
socket.on('reply', function(){ /* */ }); // listen to the event
});
我可以建議你分割你的問題分成一套小的問題。然後繼續前進。 – Lazyexpert
步驟很好。這是擺脫我的整體大局。我不明白當涉及多方的'連接'發生時究竟發生了什麼。我會自己測試一下,但我不確定這是否會從同一個客戶端(但不同的瀏覽器)工作,是嗎? – erv
連接這個'sock' - 是用戶和服務器之間的套接字對象。你可以玩它來達到你的結果。也看看房間。 – Lazyexpert