Sails V0.10-rc7通过Socket.IO使用REST蓝图从数据库中获取记录

时间:2014-05-27 19:20:22

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

航行0.10.0-rc7

Sails Socket IO:客户端没有收到服务器的响应。

使用内置蓝图的风帆我试图使用此功能从我的服务器获取信息。 (我希望使用默认行为)

客户端

//Client on different server (localhost:8000)

//Sails server
var socket = io.connect('http://localhost:1337');

socket.get('/event',function serverSays(err,events){
    if (err)
        console.log(err)

    console.log(JSON.stringify(events));
});

服务器

活动模型

module.exports = {

    schema : true,

    attributes: {

        name : {
            type : 'STRING',
            maxLength: 50,
            required: true
        }
    }
};

在服务器终端(日志)中:

详细:客户授权 详细:握手授权4TGNw-ywabWYG9j-AHaC 详细:设置请求GET /socket.io/1/websocket/4TGNw-ywabWYG9j-AHaC?__sails_io_sdk_version=0.10.0&__sails_io_sdk_platform=browser&__sails_io_sdk_language=javascript verbose:设置客户端4TGNw-ywabWYG9j-AHaC的心跳间隔 详细:客户授权 详细说明:websocket writing 1 :: verbose:socket.io客户端(4TGNw-ywabWYG9j-AHaC)连接成功!

但是我的客户端上的回调永远不会被调用????

好像客户端与服务器连接..

有什么建议吗?

修改

我必须强调客户端和sails服务器在不同的服务器上运行。执行io.connect(localhost:1337)时的握手根据服务器日志与服务器正确对话。

它的后续动作socket.get(“/ Event”)不会产生任何结果。根据服务器日志,我会说它永远不会到达服务器....

1 个答案:

答案 0 :(得分:0)

我想我会留下一张纸条,因为我现在正在实施。

事实证明,我犯了一个相当尴尬的错误/假设。

使用Sails js的浏览器SDK我使用:

连接到远程服务器
io.connect("serverurl")

然后愉快地开始尝试执行各种套接字功能,例如socket.get ..

我没有做的是在

之后
io.connect("url") 

我仍然必须通过侦听连接事件的套接字来确保我的应用确实已连接到服务器:

socket.on("connect",function())...

一旦我解决了这个难题的一小部分,所有人都去游泳了!

我还必须声明我相信我遇到此问题的原因是因为我试图在sails run(init)函数中执行初始连接和后续请求。因此,我的后续操作很可能在应用程序和服务器成功建立连接之前执行。

我认为初始连接(io.connect)和后续操作已在单独的用户流中执行,所有这些都可能已经确定已经建立连接。