2017-07-18 24 views
0

我想将socket.io集成到我的keystone应用程序中。我实例化对象在我keystone.app的底部,像这样:Socket.io和Keystone - 参考socket.io对象

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数据库后发出消息时,问题就出现了。

在我的架构/模型文件中。我已经添加了这部分。它被正确调用,但套接字似乎无法连接到套接字会话。

Hon.schema.post('save', function(data){ 
    var io = keystone.get('io'); 
    io.attach(keystone.httpServer) 

    io.sockets.emit('hon_upd'); 
}); 

我收到的客户端控制台此错误,后保存功能,几秒钟后称为:

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 
+0

你找到一个方法来集成插座,带梯形JS io的..? – usama

回答

0

你为什么要安装IO一次凌海HttpServer的。

io.attach(keystone.httpServer) 

尝试删除上面的行