首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Socket.IO-客户端无法获得授权失败的原因

Socket.IO-客户端无法获得授权失败的原因
EN

Stack Overflow用户
提问于 2012-08-04 09:50:28
回答 1查看 1.4K关注 0票数 4
  • socket.io@0.9.9
  • socket.io-client@0.9.9
  • 快递@3.0.0rc1

服务器代码:

代码语言:javascript
复制
//run with node-dev server.js
var remoteServer = io.of('/remote');
remoteServer.authorization(function(handshakeData, callback){
  return callback('unknown clientType', false);
}

服务器日志:

代码语言:javascript
复制
You can visit your app with http://localhost:3000
   info  - handshake authorized l4FzYiWpHo2d8VeoB3Zo
   warn  - handshake error unknown clientType for /remote

客户端代码:

代码语言:javascript
复制
//run with node-dev client.js
var io = require('socket.io/node_modules/socket.io-client');
var client = io.connect('http://localhost:3000/remote');
client.on('connect_failed', function(reason){
  console.log('connect_failed:', reason);
});

//will call this because it's Namespace authorization
client.on('error', function(reason){
  console.log('error:', reason);
});

客户机日志:

代码语言:javascript
复制
//error reason miss.
E:\Workspace\TZ\SmartDoor\client>node-dev client.js
error:
EN

回答 1

Stack Overflow用户

发布于 2013-09-11 16:41:01

authorization in Socket.IO是中间件,用于处理基于Header数据的握手过程,该数据是在WebSockets情况下与第一个HTTP交换协议报头一起发送的。

此数据包含正常的标头内容以及cookie,有时用于恢复会话。

虽然authorization中间件发生在实际的WebSockets握手过程完成之前,而且该中间件不应用于应用程序逻辑授权,而只用于网络和http (如用于恢复会话的cookie、禁用IP等)。

因此,我建议不要将此中间件用于应用程序逻辑,因为它实际上也是协议特定的(Socket.IO使用了许多协议和通信层,如WebSockets、XHR长轮询、AJAX等)。但是,在成功建立连接之后,是否要执行身份验证逻辑。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11807599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档