所以我在node.js中使用http://socket.io并开发聊天以了解有关node.js的更多信息
当用户打开页面时,我使用node.js与MySQL通信。
但出于带宽原因,我无法继续使用MySQL,所以我在那里存储了一些变量。例如,我不希望用户登录两次,因此我会将所有用户的套接字ID存储在JSON中。如果该用户已经存在套接字ID(在node.js中),那么我将断开套接字。
这很好用,但是我想说我想断开用户的连接,我将如何用PHP做到这一点?
我考虑的一个选项是,我可能会使用所需的更改更新数据库中的表,然后node.js每隔60秒检查一次该表并执行它需要做的事情,然后在更改后更新表完成了。
这是最好的选择还是我应该尝试使用PHP来实现这一目标?显然PHP会更直接 - 但这对我来说并不是太过关注。
答案 0 :(得分:1)
这很简单:
确保您的node.js代码支持HTTP请求而不仅仅是套接字。
添加路线以执行任何操作。例如,你可以处理/api/disconnect/:userId
,它可以做你需要的任何事情。
在您的PHP代码中,使用file_get_contents
或cURL系列调用来调用相关的网址。
当然,你想确保你有一些不错的安全性,这样只有你的PHP脚本可以称你为webservices,否则你就会打开各种攻击的大门。在短期内,这可以通过仅监听127.0.0.1
并使用该地址进行沟通来完成。
请注意,问题的标题实际上与其文字不匹配。您实际上并没有修改node.js代码,而只是修改它操作的数据。
答案 1 :(得分:0)
不确定我是否遵循您的描述,但有一点突出的是您正在考虑使用代码修改代码。唐'吨。自修改代码(无论它是否分散在系统的不同组件中)都是非常坏主意。
如果该用户已存在套接字ID,那么我将断开套接字。
存在于哪里?大概在node.js。
虽然您可以使用数据库来保存数据,但我会尝试将数据从PHP脚本直接注入node.js。这消除了轮询步骤。关于如何在重新启动后将信息重新填充到node.js中存在一个问题,但这取决于比您提供的信息更多的信息。