1

帆 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 详细:设置客户端 4TGNw 的心跳间隔-ywabWYG9j-AHaC 详细:客户端授权详细:websocket 写入 1:: 详细:socket.io 客户端(4TGNw-ywabWYG9j-AHaC)连接成功!

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

似乎客户端与服务器连接..

有什么建议么?

编辑

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

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

4

1 回答 1

0

我想我会留下一个便条,因为我的实现现在正在运行。

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

使用 Sails js 的浏览器 SDK,我使用以下方法连接到远程服务器:

io.connect("serverurl")

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

我没有做的是之后

io.connect("url") 

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

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

一旦我解决了这个小难题,一切都会顺利进行!

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

我相信如果初始连接 (io.connect) 和后续操作在单独的用户流中执行,那么一切都会像连接肯定已经建立一样。

于 2014-06-12T07:06:33.450 回答