[問題] 如何使用websocket只跟某用戶交流?

看板PHP作者 (Freebug)時間4年前 (2020/05/05 16:05), 4年前編輯推噓0(004)
留言4則, 1人參與, 4年前最新討論串1/1
如題 最近在用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://www.ptt.cc/bbs/PHP/M.1588665955.A.C68.html

05/05 17:56, 4年前 , 1F
登入阿
05/05 17:56, 1F

05/05 17:57, 4年前 , 2F
有人從websocket來了=>叫他拿token和簽章出來
05/05 17:57, 2F

05/05 17:57, 4年前 , 3F
token和簽章都對=>資料給他
05/05 17:57, 3F

05/05 17:57, 4年前 , 4F
token或簽章不對=>跟他說404
05/05 17:57, 4F
謝謝 那麼第一個問題該怎麼解決呢? 不想讓伺服器再開額外的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
文章代碼(AID): #1UiHvZne (PHP)
文章代碼(AID): #1UiHvZne (PHP)