我想为基于 PHP 的论坛添加实时功能 - 新帖子一经创建就会自动显示给用户。
我觉得有点困惑的是 PHP 代码和 NodeJS+socket.io 之间的交互。
我将如何通知 NodeJS 服务器有关新帖子并让服务器通知正在观看帖子发布的线程的客户端?
编辑
尝试了以下代码,它似乎有效,我唯一的问题是这是否被认为是一个好的解决方案,因为它看起来有点乱。
我使用 socket.io 在端口 81 上监听客户端,而运行 om 端口 82 的服务器仅供论坛使用 - 当创建新帖子时,PHP 脚本会在端口 82 上向 localhost 发送 POST 请求,连同数据。
这个可以吗?
var io = require('socket.io').listen(81);
io.sockets.on('connection', function(socket) {
socket.on('init', function(threadid) {
socket.join(threadid);
});
});
var forumserver = require('http').createServer(function(req, res) {
if (res.socket.remoteAddress == '127.0.0.1' && req.method == 'POST') {
req.on('data', function(chunk) {
data = JSON.parse(chunk.toString());
io.sockets.in(data.threadid).emit('new-post', data.content);
});
}
res.end();
}).listen(82);