/ / Socket.io et Keystone - Objet de référence socket.io - javascript, node.js, socket.io, keystonejs

Socket.io et Keystone - Objet socket.io de référence - javascript, node.js, socket.io, keystonejs

J'essaie d'intégrer socket.io dans mon application Keystone. Je suis instancier l'objet dans le bas de mon keystone.app comme suit:

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

Tout cela fonctionne bien et je peux émettre et recevoir des messages de mes sockets. Le problème se pose lorsque j'essaie d'émettre un message après que l'un de mes modèles a été utilisé pour insérer des données dans mongo db.

Dans mon fichier schéma / modèle. J'ai ajouté cette partie. Il est appelé correctement, mais le socket semble incapable de se connecter à la session du socket.

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

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

Je reçois cette erreur dans la console du client, quelques secondes après l'appel de la fonction de sauvegarde:

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

Réponses:

0 pour la réponse № 1

pourquoi vous attachez io à httpserver une fois agait.

io.attach(keystone.httpServer)

essayez de supprimer la ligne ci-dessus