作者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/cn.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