我想获取系统通知并将它们通过http传递给客户端。将两个主循环合并为一个node.js进程
现在我使用node.js在一个进程中提供这两个服务,但存在一个问题。 通知监听器有自己的主循环监听系统事件,当服务启动时,它使服务器停止提供http服务。我认为如果我能将这两种服务的主要环路合并为一个,问题就可以解决。这可能吗?我怎么能开始?
谢谢
下面是示例代码:
var server = require("express").createServer(),
io = require('socket.io').listen(server);
server.listen(8000);
server.get("/", function (req, res) {
res.sendfile("./public/main.html");
});
io.of('/images').on('connection', function (socket) {
//read images and transfer
}
io.of('/notify').on('connection', function (socket) {
//start listen system notifications
notifyLib.start_daemon();
}
“notifyLib.start_daemon()” 是一个原生扩展其代码如下:
DBusError error;
int rt;
dbus_error_init (&error);
connection = dbus_bus_get (DBUS_BUS_SESSION, &error);
if (dbus_bus_name_has_owner(connection, DBUS_NAME, &error))
printf("*** DBUS_NAME had owner\n");
rt = dbus_bus_request_name (connection, DBUS_NAME, 0, &error);
if (!dbus_connection_add_filter (connection, filter_func, NULL, NULL))
printf("*** Failed to add filter\n");
if (!dbus_connection_register_object_path (connection, DBUS_PATH, &echo_vtable, (void*) 0xdeadbeef))
printf("*** Failed to register object path\n");
while (dbus_connection_read_write_dispatch (connection, -1))
;
dbus_connection_remove_filter (connection, filter_func, NULL);
dbus_connection_unref (connection);
dbus_shutdown();
有有很多图像需要传输,但是当听者启动时,图像传输将停止。
你能提供一些代码吗? – Magic 2012-03-16 07:20:57
我在帖子中添加了示例代码。 – Bruce 2012-03-16 10:27:59
这很难理解你的意思。你在阻止服务器的'/ notify'连接处理程序中做了些什么?如果是这样,你应该提供源代码。你上面有什么看起来很好。 – 2012-03-16 10:41:48