虽然曾经有过使用套接字的非常好的文档,但感谢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表明它已在那里完成,但事情又发生了变化。
答案 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(虽然看起来你已经阅读了所有关于SailsSocket的内容:)。您可以使用SailsSocket
访问基础socket.io
客户端。
io.socket._raw
希望这有帮助!