Dan*_*Dan 67 node.js socket.io
如何在套接字连接时最好地发送附加数据?
客户:
socket.on('connect',function(){
//I'd like set some values and pass them up to the node server.
});
Run Code Online (Sandbox Code Playgroud)
Node.js服务器:
io.on('connection', function(client){
//I'd like to get the data here.
});
Run Code Online (Sandbox Code Playgroud)
例如,发送用户名或电子邮件地址等.
Miq*_*uel 53
您应该在connect或create上发送数据:
var s = io('http://216.157.91.131:8080/', { query: "foo=bar" });
s.connect();
var c = io.connect('http://216.157.91.131:8080/', { query: "foo=bar" });
Run Code Online (Sandbox Code Playgroud)
使用新版本的socket.io,在服务器上就是事情发生了变化:
var io = require('socket.io')(server);
io.use(function(socket, next) {
var handshakeData = socket.request;
console.log("middleware:", handshakeData._query['foo']);
next();
});
Run Code Online (Sandbox Code Playgroud)
Dan*_* W. 25
我有一个不同的方法 - 连接后立即发出一个事件,数据:
socket.on('connect',function(){
// Send ehlo event right after connect:
socket.emit('ehlo', data);
});
io.on('connection', function(client){
// Receive ehlo event with data:
client.on('ehlo', function(data) {
});
});
Run Code Online (Sandbox Code Playgroud)
您可以保存变量/对象,并说,当没有ehlo
数据事件时,其他事件将被忽略,直到ehlo
发送为止.
如果这不满足,你可以在连接时发送数据,我不会复制代码,但它在这个答案:https://stackoverflow.com/a/13940399/1948292
Ivo*_*zel 12
connection
一旦建立TCP连接,事件就会被触发.没有办法在两者之间发送任何东西.
您可以做的是简单地获取服务器发送的第一条消息并将数据放入该消息中.我强烈建议为此推出一些精简协议,因此您将拥有多种类型的消息,并使用这些消息来确定代码应如何处理数据.
这也可以更加扩展,因为为此提出通用架构相当容易.如果您想等待userdata
首先进入,您只需在连接中添加一些状态即可.
小智 7
这是我的代码,用于向nodejs和server.io服务器客户端发送查询数据
var socket = io.connect(window.location.origin,{query:'loggeduser=user1'});
io.sockets.on('connection', function (socket) {
var endp = socket.manager.handshaken[socket.id].address;
console.log("query... " + socket.manager.handshaken[socket.id].query.user);
});
Run Code Online (Sandbox Code Playgroud)
查询... USER1
这是我在套接字版本 2.1.1 上的代码
//client side
var socket = io.connect(window.location.origin,{query:'loggeduser=user1'});
// server side
io.socket.on('connection', function (socket) {
console.log("loggeduser => " + socket.handshake.query.loggeduser);
});
Run Code Online (Sandbox Code Playgroud)
我发现这里的答案在这方面非常有用:在socket.io中发送自定义数据和handshakeData?
另外刷新以下文档有助于解释将变量绑定到握手对象的方法,可以在连接期间从套接字对象访问该参数:https://github.com/LearnBoost/socket.io/wiki/Authorizing#global-authorization
归档时间: |
|
查看次数: |
54035 次 |
最近记录: |