使用socket.io和sails js

时间:2015-09-23 23:18:54

标签: node.js websocket socket.io sails.js

虽然曾经有过使用套接字的非常好的文档,但感谢Irl Nathon's Sails Cast series。事情在 v0.11 中发生了变化,sails团队包装并掩埋了socket.io例程。

风帆网站例如。 SailsSocket 令人抓狂,简明扼要,说明要做什么,但不知道如何做或在何处做,或者我需要 npm bower 。尝试使用帆船网站上谈到的io.socket.get特别令人沮丧。我甚至无法在我的v0.11目录中找到它。

首先,我想知道如何以及在何处创建自己对.post`io.socket.request({ method: 'get', url: '/sites/2', params: {}, headers: {} },function serverResponded(body, JWR){console.log("Body: ", JSON.stringify(body,null, 4)); console.log(' JWR: ', JWR.body)});' 或其他任何内容的回复。现在当我做了类似的事情:

undefined
VM1149:7 "Not implemented in core yet"
VM1149:7  JWR:  Not implemented in core yet

我回来了:

app.js

我可以看到在sails控制台中调用的网站,但没有任何结果。

我相信这是因为我已经定义了自己的路由,并且在我的站点控制器中有自己的find:function,我手动需要将某些东西推入服务器端套接字。但我很困惑,我是如何使用HTTP调用整个页面,而只是在同一控制器例程中使用socket.io调用表。

  • 我在哪里编写可以从网页调用的低级 socket.io 例程?

  • 我还在i == len(key)文件中执行此操作吗?

Sails Cast表明它已在那里完成,但事情又发生了变化。

1 个答案:

答案 0 :(得分:0)

Sails"虚拟请求" (他们称之为基于socket.io的HTTP-ish请求)通常用于检索或发布JSON数据到服务器。此外,如果客户端脚本发出虚拟请求,则服务器可以向/从房间添加或删除请求套接字。

请注意,使用&#34;虚拟方法&#34;最终会运行相同的控制器操作,但会设置<div class="text-box" contenteditable="true"></div> body { background-color: black; } .text-box { background-color: white; color: black; height: 200px; width: 200px; margin: auto; white-space: pre-wrap; }

此示例是一个视图,它为需要HTML的请求呈现视图,但返回基于套接字的请求的JSON数据:

req.isSocket = true

对于低级... // 'get /sites/:id': 'SomeController.showSite' (should be put in your `routes.js`) showSite: function(req, res) { // load something from the database Site.findOne(req.param('id')).exec(function(err, site) { // handler errors (same for HTTP or sockets) if (err) return res.serverError(); if (!site) return res.notFound(); if (req.isSocket) return res.json(site); // render JSON response for our `site` object else return res.view('sites/show', {site: site}); // render an HTML view }); } ,sails提供全局变量socket.io(来自sails.io.js),它是io的一个实例。它允许您制作HTTP-ish&#34;虚拟请求&#34;。更多信息here(虽然看起来你已经阅读了所有关于SailsS​​ocket的内容:)。您可以使用SailsSocket访问基础socket.io客户端。

io.socket._raw

希望这有帮助!