服务器代码:
//run with node-dev server.js
var remoteServer = io.of('/remote');
remoteServer.authorization(function(handshakeData, callback){
return callback('unknown clientType', false);
}服务器日志:
You can visit your app with http://localhost:3000
info - handshake authorized l4FzYiWpHo2d8VeoB3Zo
warn - handshake error unknown clientType for /remote客户端代码:
//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);
});客户机日志:
//error reason miss.
E:\Workspace\TZ\SmartDoor\client>node-dev client.js
error:发布于 2013-09-11 16:41:01
authorization in Socket.IO是中间件,用于处理基于Header数据的握手过程,该数据是在WebSockets情况下与第一个HTTP交换协议报头一起发送的。
此数据包含正常的标头内容以及cookie,有时用于恢复会话。
虽然authorization中间件发生在实际的WebSockets握手过程完成之前,而且该中间件不应用于应用程序逻辑授权,而只用于网络和http (如用于恢复会话的cookie、禁用IP等)。
因此,我建议不要将此中间件用于应用程序逻辑,因为它实际上也是协议特定的(Socket.IO使用了许多协议和通信层,如WebSockets、XHR长轮询、AJAX等)。但是,在成功建立连接之后,是否要执行身份验证逻辑。
https://stackoverflow.com/questions/11807599
复制相似问题