使用 socket.io 实施撇号 cms
Implementing apostrophe cms with socket.io
我正在尝试在 Apostrophe cms 2.x
上实施 Socket.io
我不知道如何从 express apos 获取服务器对象
如果我执行以下操作,我将不得不在新端口上创建一个新服务器,并且我需要在与 express 应用程序相同的端口上使用套接字
lib/modules/apostrophe-socket/index.js
module.exports = {
construct: function(self, options) {
var server = require('http').Server(self.apos.app);
var io = require('socket.io')(server);
io.of('/api/v1/io/notifications').on('connection', function (socket) {
console.log("New connection", socket.id);
socket.on('notification', function (data) {
console.log("this is a notification ",data);
});
});
}
};
查看设置 express 应用程序的 apostrophe-express 模块。服务器对象可以作为 apos.modules['apostrophe-express'].server 访问。这是在启动过程中很晚才建立的,因为一旦建立连接就可以开始进入。访问它的一个好时机是在 app.js 中的 afterListen: function(err) { ... } 回调中。请注意,如果存在 err,则它没有成功侦听,并且由于您提供了 afterListen 函数,因此您有责任退出。
因此您的代码可能如下所示:
// in app.js
afterListen: function(err) {
if (err) {
console.error(err);
process.exit(1);
}
var io = require('socket.io')(apos.modules['apostrophe-express'].server);
}
我们不为 afterListen
发出 promise 事件是有问题的,因此您只能在 app.js
中使用回调来执行此操作,而不是在您自己的模块中添加事件侦听器,这会更好地构建您的代码。但是,您可以从 afterListen
调用您自己的模块之一中的方法。我们将在初始化的这一点上查看添加一个 promise 事件。
我正在尝试在 Apostrophe cms 2.x
上实施 Socket.io我不知道如何从 express apos 获取服务器对象
如果我执行以下操作,我将不得不在新端口上创建一个新服务器,并且我需要在与 express 应用程序相同的端口上使用套接字
lib/modules/apostrophe-socket/index.js
module.exports = {
construct: function(self, options) {
var server = require('http').Server(self.apos.app);
var io = require('socket.io')(server);
io.of('/api/v1/io/notifications').on('connection', function (socket) {
console.log("New connection", socket.id);
socket.on('notification', function (data) {
console.log("this is a notification ",data);
});
});
}
};
查看设置 express 应用程序的 apostrophe-express 模块。服务器对象可以作为 apos.modules['apostrophe-express'].server 访问。这是在启动过程中很晚才建立的,因为一旦建立连接就可以开始进入。访问它的一个好时机是在 app.js 中的 afterListen: function(err) { ... } 回调中。请注意,如果存在 err,则它没有成功侦听,并且由于您提供了 afterListen 函数,因此您有责任退出。
因此您的代码可能如下所示:
// in app.js
afterListen: function(err) {
if (err) {
console.error(err);
process.exit(1);
}
var io = require('socket.io')(apos.modules['apostrophe-express'].server);
}
我们不为 afterListen
发出 promise 事件是有问题的,因此您只能在 app.js
中使用回调来执行此操作,而不是在您自己的模块中添加事件侦听器,这会更好地构建您的代码。但是,您可以从 afterListen
调用您自己的模块之一中的方法。我们将在初始化的这一点上查看添加一个 promise 事件。