如何在sails.js 中的SocketIO 握手期间修复“此套接字没有可用的有效会话”?

Posted

技术标签:

【中文标题】如何在sails.js 中的SocketIO 握手期间修复“此套接字没有可用的有效会话”?【英文标题】:How do I fix 'No valid session available from this socket' during SocketIO handshaking in sails.js? 【发布时间】:2014-04-29 22:51:32 【问题描述】:

我正在使用sails.js 开发ios 应用程序的API,并使用websockets 进行实时通信。问题是我无法让套接字 io 握手工作。

“此套接字没有可用的有效会话”错误显示在控制台中。当我用谷歌搜索了一下时,我知道我需要设置一个有效的 cookie。由于我的客户端不是基于浏览器的 javascript,我无法设置任何 cookie。

我什至在config/sockets.js 中设置了authorization: false

有什么解决办法吗?还是选择 Sails JS 来完成这项任务是一个错误?

顺便说一句,这些是我遇到这个问题的一些链接:

https://github.com/balderdashy/sails/issues/1062 https://github.com/balderdashy/sails/issues/995 https://github.com/balderdashy/sails/issues/1003

【问题讨论】:

您的应用需要会话支持吗?如果没有,您可以忽略此错误。 【参考方案1】:

两种解决方案

    由于我的客户端不是基于浏览器的 Javascript,我无法设置任何 cookie。

    你当然可以“设置一个cookie”,你只需要手动设置:

    拦截Set-Cookie标头 解析它以检索sails.sid

    稍后,当您发生请求时:

    将检索到的sails.sid 传递给您请求的Cookie 标头

    您甚至可以找到为您制作这个的 library。

    只需通过 the official client library 专门与sails 服务器互动,它会为您处理所有这些逻辑。 (使用辅助方法通过它的套接字发出“类似 REST”的请求,不要在外面发出真正的 http 请求)

【讨论】:

以上是关于如何在sails.js 中的SocketIO 握手期间修复“此套接字没有可用的有效会话”?的主要内容,如果未能解决你的问题,请参考以下文章

Sails.js 中的 JWT 和护照

如何在sails.js 中创建动态策略

如何将凉亭组件与sails.js 连接?

iOS 中的 Sailsjs SocketIO

如何在 Sails.js 中生成唯一的发票 ID

Sails.Js - 我如何在sails.Js 中进行分页