FeathersJS socketio客户端断开连接?

Posted

技术标签:

【中文标题】FeathersJS socketio客户端断开连接?【英文标题】:FeathersJS socketio client disconnect? 【发布时间】:2019-05-30 22:54:37 【问题描述】:

我正在开发一个使用 FeathersJS SocketIO 客户端连接到 FeathersJS 服务器的 Electron 应用程序。它使用 FeathersJS 文档中提供的代码正常工作,但我希望能够连接/断开客户端与服务器的连接,基本上是连接到另一台服务器(具有完全相同的服务)。例如:我有 2 个 FeathersJS 服务器,它们的服务完全相同,但存储的数据不同,我希望我的 Electron 应用能够连接到 1 号服务器,然后断开连接并连接到 2 号服务器。

有什么办法吗?

【问题讨论】:

【参考方案1】:

最直接的方法可能是初始化两个 Feathers 应用程序,您可以在 Electron 应用程序中相应地交换它们。一个稍微更老套的方法是替换应用程序 (app.io) 和 initialized client services (service.connection) 上的连接:

const replaceConnection = (app, socket) => 
  app.io = socket;

  Object.keys(app.services).forEach(name => 
    app.service(name).connection = socket;
  );

  return app;

【讨论】:

你好达夫。我没有足够详细地解释我的问题。我不想同时连接到2台服务器,而是根据用户的输入更改服务器。所以我的 Electron 应用程序将启动,从配置文件中读取服务器地址并尝试连接到该服务器。如果用户通过应用程序 UI 更改服务器地址(以前未知),则 Electron 应用程序应关闭与第一台服务器的连接,然后连接到新服务器。由于“要求”的工作方式,我看不到在 javascript 中执行此操作的“好”方式。也许将 FeathersJS 客户端包装到类中? 为什么需要require?我认为你所要做的就是一个 createApp(url) 函数,它返回一个用于 URL 的 Feathers 应用程序,并且能够在整个应用程序中交换返回的 app 对象。 你好 Daff,我已经尝试过你提出的一个简单函数的建议,它返回一个新的 feathersClient 并且它可以工作......我不太习惯 NodeJs 和 Javascript 的工作方式,所以我想我'我的代码过于复杂...谢谢您的帮助!

以上是关于FeathersJS socketio客户端断开连接?的主要内容,如果未能解决你的问题,请参考以下文章

SocketIO + Flask 检测断开连接

socket.io、netty-socketio、nginx 每分钟断开连接

如何在 android 上检查 socket.io 连接或断开连接?

微信小程序weapp.socketio不稳定,断开不触发断开事件问题

Socket.IO 客户端在 3g/4g 连接上无法正常工作

SocketIO 识别断开的用户