我目前正在开发一个网络应用程序,我正在开发聊天应用程序功能。我想创建一个使用websocket和phpwebsocket作为ws-server的实时聊天功能,我希望聊天记录在数据库中,我的问题是,就用户体验和web服务器性能而言,以下哪一项是最佳实践:
- 每当客户端发送消息时,消息首先通过ajax发送到服务器,脚本进行必要的处理并将其记录到数据库中,然后返回true,成功后将信息返回给客户端,然后回调函数将消息发送到websocket服务器,服务器将其转发给接收方
- 每当客户端发送消息时,消息都会被发送到websocket服务器,websocket进行处理并发布到数据库,然后在成功后将消息转发给接收方
我担心第二个选项会给websocket服务器带来太多负载,因为它是为不同客户端服务的单个脚本。。。。。任何帮助都将不胜感激
对于聊天解决方案,只要你知道你对IE的支持有限(IE9不能做websocket),websocket似乎是更好的方法。
现在,关于您的担忧,运行poC是一个不错的场景,但作为建议,我认为这两种场景的性能将相似,因为它将由应用服务器处理。如果DB访问是一个问题,您仍然可以找到一些解决方案,比如将消息放在某种异步队列上,并让一些单独的进程将它们写入数据库。只有当成功的DB写入不是关键的或响应不需要时,这才会起作用。