[请益] 关于websocket实作聊天室的问题

楼主: defsrisars (阿转)   2016-07-13 17:35:54
不好意思
最近刚开始接触网页设计
想请问一下关于聊天室的设计
版上的文大概都爬了
也Google了很多websocket的文章
目前大概只只能写出用自己本机挂server.php会一直回传date给client
我想写像FB或wootalk那样的聊天室
(可能是1-1或n-n)
想请问如果是1-1的话,假如A和B
1.那么A.B两人的讯息都是由server端回传印吗?
还是自己key的讯息由自己client直接印,对方的server回传后再印
后者会对效能比较好吗?不过如果要像FB那样保留历史讯息是不是还是得经过server进后
端数据库
2.假设A-B两人聊天、C-D两人聊天,server端要怎么知道A和B的讯息要丢给A和B,C和D的
讯息要丢给C和D?
还是每次有讯息进来就存到数据库再把数据库资料丢回去?(资料表有row纪录sender和r
eceiver)
但是如果是这样靠数据库判断的话,如果有x个人的群组该怎么办呢?
不好意思,这方面观念没有很好,谢谢
作者: MOONRAKER (㊣牛鹤鳗毛人)   2016-07-13 17:59:00
就记群组里面有谁 然后群组内对话通通送一份啊
作者: xdraculax (首席怪叔叔)   2016-07-14 08:37:00
对话区要统一收server给的,对话前后顺序才会一致
作者: alpe (薛丁格的猫)   2016-07-14 09:30:00
public subscribe pattern
作者: lhsieh (不要问)   2016-07-25 12:22:00
html5 webrtc
作者: et69523820 (小猪)   2016-07-26 01:49:00
通常我会建立一个聊天室成员物件 必要属性要有群组ID 和 使用者唯一编号 最少要有这2个 就可以达到分群 和 私聊了A和B的讯息要丢给A和B 这属于私聊 透过使用者唯一编号就会知道聊天讯息要传给谁基本上即时聊天讯息 不会从数据库读出 除非是历史讯息即时讯息 量是很恐怖的 数据库会受不了 我的做法当接收到讯息 在服务器可以把讯息缓存或直接就转发讯息缓存的好处是 近期的历史讯息不用到数据库 就可以读出 比如你收到一个群组为PP 目标使用者编号1234就去扫描你目前的线上聊天名单 有关群组PP 编号1234发送讯息即可 线上名单也是缓存 不用读数据库开发聊天室 数据库只是辅助 其他都缓存 如果要保留聊天室讯息写入数据库 也建议不要一笔讯息就写入一次这样讯息量一堆数据库效能会变低落 可以把讯息缓存到比如 500条讯息 在一次性写入 这样会对于资料表有索引速度会差非常多

Links booklink

Contact Us: admin [ a t ] ucptt.com