소켓 연결에 대한 추가 데이터 보내기
소켓 연결시 추가 데이터를 보내는 가장 좋은 방법은 무엇입니까?
고객:
socket.on('connect',function(){
//I'd like set some values and pass them up to the node server.
});
Node.js 서버 :
io.on('connection', function(client){
//I'd like to get the data here.
});
예를 들어 사용자 이름이나 이메일 주소 등을 보냅니다.
연결 또는 생성시 데이터를 보내야합니다.
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" });
으로 socket.io의 새 버전 일들을 변경 한 경우, 서버에 :
var io = require('socket.io')(server);
io.use(function(socket, next) {
var handshakeData = socket.request;
console.log("middleware:", handshakeData._query['foo']);
next();
});
다른 접근 방식이 있습니다-데이터를 연결 한 직후에 이벤트를 생성합니다.
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) {
});
});
변수 / 객체를 보유 할 수 ehlo
있으며 데이터가있는 이벤트 가 없을 때 다른 이벤트 ehlo
는 전송 될 때까지 무시 됩니다.
이것이 만족스럽지 않으면 연결할 때 바로 데이터를 보낼 수 있으며 코드를 복사하지는 않지만 다음 답변에 있습니다 .https : //stackoverflow.com/a/13940399/1948292
connection
이벤트는 즉시 TCP 연결이 설정 될 때 해고. 그 사이에 아무것도 보낼 방법이 없습니다.
당신이 할 수있는 일은 단순히 서버에서 보낸 첫 번째 메시지를 가져와 그 메시지에 데이터를 넣는 것입니다. 이를 위해 얇은 프로토콜을 롤링하는 것이 좋습니다. 따라서 여러 유형의 메시지를 갖고이를 사용하여 코드가 데이터를 처리하는 방법을 결정합니다.
이를위한 일반적인 아키텍처를 만드는 것이 상당히 쉽기 때문에 이것은 더 확장 가능할 것입니다. userdata
가 먼저 올 때까지 기다리 려면 연결에 상태를 추가하면됩니다.
이것은 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);
});
query ... user1
I found the answer located here really helpful in this regard: Send custom data along with handshakeData in socket.io?
Also brushing up on the following documentation helps explain ways to tie variables to the handshake object which can be accessed from the socket object during the connection: https://github.com/LearnBoost/socket.io/wiki/Authorizing#global-authorization
this is my code on socket version 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);
});
참고URL : https://stackoverflow.com/questions/4743592/send-additional-data-on-socket-connection
'Development Tip' 카테고리의 다른 글
Visual Studio Code에서 올바른 들여 쓰기로 붙여 넣기 복사 설정 (0) | 2020.11.11 |
---|---|
WPF 응용 프로그램에서 사용자 설정을 저장하는 방법? (0) | 2020.11.11 |
HTML5 범위에 대한 onChange 이벤트 (0) | 2020.11.11 |
Rails : schema.rb의 기능은 무엇입니까? (0) | 2020.11.11 |
JSONP는 사용하기에 안전합니까? (0) | 2020.11.11 |