2017-07-18 13 views
0

私は、私のキーストーンアプリケーションにsocket.ioを統合しようとしています。私はそうのように私の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}) 
       }); 
      }); 
     } 
    }); 

これは、すべてが正常に動作し、私は私のソケットからのメッセージを発すると受け取ることができています。私のモデルの1つがmongo dbにデータを挿入するのに使用された後にメッセージを出そうとしているときに問題が発生します。

私のスキーマ/モデルファイル内。私はこの部分を追加しました。正しく呼び出されていますが、ソケットがソケットセッションに接続できないようです。

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

は、なぜあなたは一度agait HTTPSERVERするIO添付されています。

io.attach(keystone.httpServer) 

はライン