我有一个很老的应用程序,但我们有我们的聊天功能的PHP API,它有两个主要功能:获取最后20条消息并将新消息插入数据库。Socket.io与其余的API
目前,我们正在使用AJAX更新数据,但我希望更快地更新数据。
是否有可能将socket.io连接到某些php API?我试图在这个主题上搜索一些东西,但没有好的例子。你可以给我一点点推动,我可以如何实现这样的事情?
- 用户连接到的NodeJS其与消息返回JSON服务器
- 当新用户添加的信息,的NodeJS服务器呼叫API用于将新的消息发送到数据库,并且它触发“新的邮件”事件后的
- 当nodejs服务器收听事件“新消息”时,它从数据库中提取数据,将其格式化为json并触发事件“数据更新”,其他用户监听事件“数据更新” ,他们只是在json中得到一个新的消息列表
我的想法是,这可以像某些缓存层一样工作,因为数据库中的数据只会被提取一次(通过触发事件),然后作为静态json提供给用户。
感谢您的任何帮助。
注意:我需要使用旧的php api,因为在服务器上处理的聊天格式中有一些特殊功能。从头开始重写它是不可能的。当只有一些新数据时,我只想使用socket.io将数据从服务器推送到用户。现在,即使没有新消息,并且当然会创建不必要的数据库连接等,他们仍会使用ajax调用新数据。
感谢您的回答!你为什么认为它不会提高性能?我的想法是,每个客户端都在下载静态数据,并且只有当有新消息时,节点服务器才会连接到php rest api,然后获取它们,然后服务于所有客户端。在这种情况下,如果有1000个或2000个客户端,则不重要,因为从数据库中获取数据只需要完成一次(当有新消息时)。但也许我错过了一些东西,或者我的想法太过于理想化了...... –
我只是不太了解你的概念。你现在描述的应该会产生更好的性能,因为如果这只是从HTTP完成,那么将需要1000或2000个唯一的http请求,并且所有这些都需要头从服务器飞到客户端,所以我相信你的想法很好。 – itsundefined