2017-07-18 19 views
0

Ich versuche, socket.io in meine Keystone-App zu integrieren. Ich instanziieren das Objekt in der Tiefe meines keystone.app wie so:Socket.io und Keystone - Referenz socket.io Objekt

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}) 
       }); 
      }); 
     } 
    }); 

Das alles funktioniert gut und ich bin in der Lage Nachrichten von meinen Steckdosen zu emittieren und zu empfangen. Das Problem tritt auf, wenn ich versuche, eine Nachricht zu senden, nachdem eines meiner Modelle zum Einfügen von Daten in Mongo db verwendet wurde.

In meiner Schema/Modell-Datei. Ich habe diesen Teil hinzugefügt. Es wird korrekt aufgerufen, aber der Socket scheint keine Verbindung zur Socket-Sitzung herzustellen.

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

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

ich diesen Fehler in der Client-Konsole empfangen, ein paar Sekunden nach dem Postsparfunktion heißt:

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

haben Sie einen Weg finden, um Buchse integriert, mit Trapez js io ..? – usama

Antwort

0

warum Befestigen Sie io einmal Agait zu Http.

io.attach(keystone.httpServer) 

Versuch über die Linie zu entfernen