我一直在为几个使用 Bukkit 的 Minecraft 服务器开发一个项目。我正在尝试创建一个网页,其中包含服务器世界的动态地图,以及一个实时事件更新系统,其中 a<div>
会随着服务器上发生的事件而更新。为了简要介绍我的系统是如何工作的,Minecraft 服务器通过 UDP 数据包通过同一网络与 Node.js 网络服务器通信事件,并且 Node.js 网络服务器使用这些数据包来构建包含事件信息的 JavaScript 对象。然后存储对象,并在页面被请求时传递给 Jade。Jade 负责制作模板。
我想要做的是动态更新这个页面,这样用户就不必刷新整个页面来更新事件列表。我正在尝试实现的是类似于 Facebook 代码的东西,它会在每次 Facebook 朋友发布状态、评论帖子或“喜欢”帖子等操作时更新。
在阅读关于 SO 的这个问题时,我得出结论,我需要在 PHP 脚本中使用长轮询,但我不确定如何将 PHP 与几乎完全用 Node.js 编写的网络服务器集成。我怎么能这样做呢?
编辑:
我在客户端代码中遇到了问题。
这是脚本块:
script(src='/scripts/jadeTemplate.js')
script(src='/socket.io/socket.io.js')
script(type='text/javascript')
var socket = io.connect();
socket.on('obj', function(obj) {
var newsItem = document.createElement("item");
jade.render(newsItem, 'objTemplate', { object: obj });
$('#newsfeed').prepend(newsItem);
console.log(obj);
alert(obj);
});
这是objTemplate.jade
:
p #{object}
// That's it.
当alert()
andconsole.log()
放置在脚本的顶部时,它会发出警报并记录,但在底部,它们不会执行(因此,我认为创建newsItem
、 thejade.render()
或 prepend 都有问题。
如果我需要提供更多片段或文件,请告诉我。我还在修修补补,所以我可能会自己解决它,但除非我更新,否则我仍然需要帮助。:)