我尝试了各种各样的方法.第一个是在这个问题Server cleanup after a client disconnects中概述的,其中提到:
this.session.socket.on("close")
然而,当我做了,并试图改变一个集合,它抛出一个“流星的代码必须始终运行在光纤”错误.我假设这个问题是因为一旦套接字关闭,该光纤被杀死,因此访问数据库是不可能的. OP指出这个“Meteor code must always run within a Fiber” when calling Collection.insert on server是一个可能的解决方案,但我不知道这是否是最好的方法,根据答案的意见.
然后我尝试对变量进行自动运行:
Meteor.default_server.stream_server.all_sockets().length
但是自动运行从来没有似乎被调用,所以我假设变量不是一个反应的上下文,我不知道如何使它成为一个.
最后一个想法是做一个keepalive风格的事情,但这似乎完全违背了流星哲学的粮食,我认为我只会用作一个绝对的最后手段.
我做了一个console.log的这个函数on.session.socket,唯一的其他功能可能是.on(“data”),但这是不是在socket关闭时调用.
我在这里有一点损失,所以任何帮助将是伟大的,
谢谢.
解决方法
>保持在Meteor.users的在线状态,而不是单独收集,如https://github.com/erundook/meteor-profile-online
通过回调跟踪断开连接,而不是像https://github.com/murilopolese/howmanypeoplearelooking那样的心跳
这可能是在流星中实现这一点的规范方法.我已经将它创建为一个可以使用陨石安装的智能包:https://github.com/mizzao/meteor-user-status
原文地址:https://www.jb51.cc/js/152054.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。