作者freebug (Freebug)
看板PHP
標題[問題] 如何使用websocket只跟某用戶交流?
時間Tue May 5 16:05:53 2020
如題
最近在用websocket實現聊天室功能
我想問的是,如果後端socket只開某一個port(例如8088)的情形下
Server有辦法只送訊息給某個連上此socket的人,而其他一樣有連上此socket的人則不傳
送?
也就是socket有沒有辦法只將訊息推送給某個指定的人就好?
譬如說,今天有A、B、C、D、E五個用戶同時連上port為8088的websocket聊天室
如果後端伺服器要發送訊息給Client 端,好像只能將訊息廣播給所有人,而沒法選擇性
只傳送給例如說B而已
如果要實現此功能,似乎只能再開另一個port,而且開另一個port別的人不知道是不是也
能偷窺B和伺服器之間的對話?
所以說有辦法在伺服器只開某一個port的情況下,只將訊息傳送給某人,而非廣播給所有
連上該port的所有用戶?
另外,也如何防止他人輸入port就可以偷窺別人的訊息交流?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.13.39.34 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/PHP/M.1588665955.A.C68.html
1F:→ MOONRAKER: 登入阿05/05 17:56
2F:→ MOONRAKER: 有人從websocket來了=>叫他拿token和簽章出來05/05 17:57
3F:→ MOONRAKER: token和簽章都對=>資料給他05/05 17:57
4F:→ MOONRAKER: token或簽章不對=>跟他說40405/05 17:57
謝謝
那麼第一個問題該怎麼解決呢?
不想讓伺服器再開額外的port卻可以選擇性傳訊息給指定的某個在線使用者,請問這個有
辦法做得到嗎?
還是說每增加一人,就得必須再開額外的port才行?
謝謝
※ 編輯: freebug (39.13.39.34 臺灣), 05/05/2020 18:40:00
沒事了
剛才自己解決了第一個問題了
用getClients()去取要給哪個使用者就行了
感謝回答
※ 編輯: freebug (118.169.166.94 臺灣), 05/05/2020 19:24:36