Sailsjs:在 Sails 0.11 中,如何不使用带有套接字的 onConnect 生命周期回调

Posted

技术标签:

【中文标题】Sailsjs:在 Sails 0.11 中,如何不使用带有套接字的 onConnect 生命周期回调【英文标题】:Sailsjs: In Sails 0.11, how to NOT use onConnect lifecycle callback with sockets 【发布时间】:2015-05-18 23:19:26 【问题描述】:

在 Sails 0.11 中,onConnect 生命周期回调已被套接字弃用。升级指南说,如果您需要在新套接字连接时进行任何初始设置,请“在套接字连接后从客户端发送初始请求”。

从连接的客户端发送请求非常简单。但是,如果您不使用onConnect 生命周期回调来获取服务器上的套接字,您如何设置该事件的侦听器?是否有另一种方法可以在onConnect 函数之外获取套接字并为该套接字设置侦听器?

【问题讨论】:

【参考方案1】:

这个想法是在前端使用 Sails 套接字客户端来调用 Sails 后端中的常规端点。 Sails 的部分魔力在于它路由套接字请求的方式,就好像它们是常规 HTTP 请求一样。所以在前端你可以这样做:

<script src="/js/dependencies/sails.io.js"></script>
<script>
  // This will be queued until socket actually connects
  io.socket.get("/helloworld", function(response) 
    console.log("Got response: ", response);
  );
</script>

调用您在config/routes.js 文件中设置的/helloworld 路由,并在其中进行任何“onConnect”式设置。您可以在控制器操作中使用req.isSocket,以确保请求来自套接字。

【讨论】:

啊,有道理。我们正在尝试构建一个实时 API,其他应用程序将与它们的服务器进行交互,并且它们可能没有sails.io.js 库,所以看起来我们只需要使用sails.io.on('connection') 做事的方式,而不是依靠sails来为我们做这件事,除非其他应用程序有办法在服务器端使用sails.io.js库。 你能看看这个问题吗? ***.com/questions/37129766/…

以上是关于Sailsjs:在 Sails 0.11 中,如何不使用带有套接字的 onConnect 生命周期回调的主要内容,如果未能解决你的问题,请参考以下文章

Sails js:如何在 Sails js 的单个模型中定义两个 MySQL 连接到两个不同的数据库?

SailsJS - 将sails.io.js 与JWT 一起使用

Sails Js - 防止非模型字段保存在 mongo 文档中

如何在 SAILS js 中为 GET 请求启用 csrf

将 Sails Js 与 Angular 2 集成

Sails.js - 如何避免 Sails JS 在数据库表上查找 Id(因为该表没有 id 列)