【发布时间】:2017-07-19 12:52:53
【问题描述】:
我正在尝试将 socket.io 集成到我的 keystone 应用程序中。我在我的 keystone.app 底部实例化对象,如下所示:
var sock = require('socket.io');
keystone.start({
onStart: function() {
var hserver = keystone.httpServer;
var io = keystone.set('io', sock.listen(hserver)).get('io');
// Socket function
io.on('connection', function (socket) {
console.log('Socket connected.')
socket.on('hon', function (data) {
socket.emit('hon_res', {data})
});
});
}
});
这一切都很好,我可以从我的套接字发送和接收消息。当我在使用其中一个模型将数据插入 mongo db 后尝试发出消息时,就会出现问题。
在我的架构/模型文件中。我已经添加了这部分。它被正确调用,但套接字似乎无法连接到套接字会话。
Hon.schema.post('save', function(data){
var io = keystone.get('io');
io.attach(keystone.httpServer)
io.sockets.emit('hon_upd');
});
在调用 post save 函数几秒钟后,我在客户端控制台中收到此错误:
VM7414 extensions::messaging:79 Uncaught Error: Attempting to use a disconnected port object
at PortImpl.postMessage (extensions::messaging:79:13)
at Port.publicClassPrototype.(anonymous function) [as postMessage] (extensions::utils:149:26)
at destroyPurpleBox (file:///Users/thobyy/Library/Application%20Support/Google/Chrome/Default/Extensions/mlomiejdfkolichcflejclcbmpeaniij/7.2.2_0/dist/purplebox.js:43:9)
at file:///Users/thobyy/Library/Application%20Support/Google/Chrome/Default/Extensions/mlomiejdfkolichcflejclcbmpeaniij/7.2.2_0/dist/purplebox.js:51:5
【问题讨论】:
标签: javascript node.js socket.io keystonejs