查询 websocket 服务器中的数据库

Posted

技术标签:

【中文标题】查询 websocket 服务器中的数据库【英文标题】:quering a database inside a websocket server 【发布时间】:2013-07-04 09:24:42 【问题描述】:

我目前正在开发一个网络应用程序,我正在开发一个聊天应用程序功能。我想创建一个使用 websockets 和 phpwebsocket 作为 ws 服务器的实时聊天功能,我希望将聊天记录到数据库中,我的问题是,以下哪一项将是用户体验方面的最佳实践和网络服务器性能:

    每当客户端发送消息时,消息首先通过 ajax 发送到服务器,脚本会进行必要的处理并将其记录到数据库中,然后返回 true,然后在成功时将信息返回给客户端,然后回调函数将消息发送到 websocket 服务器,服务器只是将其中继给接收者。 每当客户端发送消息时,消息都会发送到 websocket 服务器,websocket 会进行处理并发布到数据库,然后在成功时将消息中继给接收者。

我对第二个选项的担忧是在 websocket 服务器上施加了过多的负载,因为它是一个服务于不同客户端的单个脚本.....任何帮助将不胜感激

【问题讨论】:

【参考方案1】:

对于聊天解决方案,websockets 似乎是更好的方法,只要您了解您对 IE 的支持有限(IE9 无法使用 websockets)。

现在,关于您的担忧,运行 PoC 将是一个不错的方案,但作为建议,我认为这两种方案的性能将相似,因为它将由应用服务器处理。如果事实证明数据库访问是一个问题,您仍然可以找到一些解决方案,例如将消息放在某种异步队列上,并让一些单独的进程将它们写入数据库。这仅在成功的数据库写入不是关键或响应所需的情况下才有效。

【讨论】:

感谢您的回复,如果我可能会问如何将消息放入异步队列中,我们将不胜感激。再次感谢 您好,首先我要从体量研究开始。仅当您有任何性能问题时才建议使用排队,但这与使用 ajax 请求的风险相同。这是您可以使用 PHP 做什么的示例:ebrueggeman.com/blog/creating-a-message-queue-in-php 谢谢马丁,我会派上用场的,我会听取你的建议并先做大量的研究。感谢您的帮助

以上是关于查询 websocket 服务器中的数据库的主要内容,如果未能解决你的问题,请参考以下文章

基于go-gin框架的web服务框架之websocket(二)

Websocket 服务器和移动客户端

在连接时发送 Websocket 参数但不发送查询字符串

从 Python 中的 WebSocket 读取(来自 Javascript WebSocket 的数据)

如何用flask实现一个web应用来显示在mysql数据库中查询到的内容

.NET 4.5 中的 Websocket