Socket IO|如何在服务器端获取客户端传输类型
Socket IO | How to get the client transport type on the serverside?
我需要知道客户端在nodeJS服务器端使用什么传输方法来处理一些条件语句
有人知道我怎样才能得到这些信息吗?它是否保存在客户端对象中?
自Socket.IO 1.0:起
客户端:
socket.on('connect', function() {
console.log(socket.io.engine.transport.name);
}
服务器:
io.sockets.on('connection', function(socket) {
console.log(socket.conn.transport.name);
}
插座内。io 0.7.6
io.sockets.on('connection', function(client) {
console.log(io.transports[client.id].name);
});
2012年4月,这项工作:socket.transport
我相信,如果你深入了解客户端对象的内部,你可以找到它,尽管在不知道为什么需要这样做的情况下,我不得不建议你不要进行这种检查,原因有两个:
首先,由于它不在API中,开发人员完全没有责任保持向后兼容,因此任何给定的版本都可能以不同的方式实现/存储信息,这只会影响到您自己的开发并造成问题。
其次,更重要的是,我建议你重新考虑你的设计,通过socket.io与服务器的通信被构建为对所使用的方法透明。任何一方都不应该有任何区别。这就是这个库的目的,设计一个行为不同的应用程序与这个想法完全正交。
为了参考和谷歌的失误:-以防有人仍在使用v0.9(或更早版本)你可以从客户端访问这些信息,如下所示:
var socket = io.connect();
console.log(socket.socket.transport.name); //log the name of the transport being used.
在谷歌群组上找到答案https://groups.google.com/forum/#!topic/socket_io/yx_9wJiiAg0
我相信这将解决您的问题。我的技巧是在客户端连接后将传输类型保存在HTTPRequest对象上。然后您可以稍后在回拨中提取它。首先我们调整Listener类:
var io = require('socket.io'),
io.Listener.prototype._onConnectionOld = io.Listener.prototype._onConnection;
io.Listener.prototype._onConnection = function(transport, req, res, up, head){
req.socketIOTransport = transport; // Take note of the transport type
this._onConnectionOld.call(this, transport, req, res, up, head);
};
然后在你的应用程序的主体下面:
var socket = io.listen(app),
socket.on('connection', function(client){
console.log(client.request.socketIOTransport); // Lets check that transport
// ...
});
希望这能有所帮助!
io.connect.managers['connect url/port'].engine.transport
相关文章:
- 正在获取客户端计算机上特定目录中的文件名
- 从express请求对象获取客户端MAC地址
- 通过web应用程序获取客户端监视器的分辨率
- 获取客户端'服务器端的s最大int值
- 获取客户端机器's使用Asp/Javascript的精确IP地址(非公共IP)
- 使用sails.js中的beforeConnect函数获取客户端套接字
- 如何从Adobe Interactive表单中获取客户端机器的IP地址
- 如何在java servlet中获取客户端MAC地址
- Nodejs,Express - 尝试从请求对象获取客户端 IP - 显示 127.0.0.1
- Socket.io:随时获取客户端会话 ID
- 如何获取客户端在地址栏上键入的地址
- 在节点/快递中获取客户端主机名
- 如何在不使用LDAP的情况下在java中获取客户端系统的用户名
- 如何在 PHP 中获取客户端时区
- 在节点.js websocket 连接 (socket.io) 中获取客户端的 IP
- 是否可以在java Web应用程序中获取客户端操作系统用户名
- 获取客户端流星上的多个用户数据
- 如何获取客户端的时区
- 如何在 JavaScript 中获取客户端时区
- 获取客户端中的浏览器请求