【问题标题】:Socket.io and Keystone - Reference socket.io objectSocket.io 和 Keystone - 参考 socket.io 对象
【发布时间】: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


    【解决方案1】:

    你为什么要再次将 io 附加到 httpserver。

    io.attach(keystone.httpServer)
    

    尝试删除上面的行

    【讨论】:

      猜你喜欢
      • 2017-08-01
      • 2022-01-11
      • 2020-04-28
      • 2020-03-17
      • 2017-04-09
      • 2017-03-08
      • 2015-09-30
      • 2023-03-28
      • 1970-01-01
      相关资源
      最近更新 更多