当客户端尝试连接到socket.io websocket时,我需要传递PHPSESSID cookie的值。
我尝试使用socket.handshake.headers
,但由于某些原因,PHPSESSID未通过。
我尝试发出连接事件来发送cookie值。但我似乎仍然无法做到这一点。
这就是我所做的
这是我的websocket服务器代码
var env = require('./config');
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var clients = [];
server.listen(env.socket.port, env.socket.host, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Websocket running at http://%s:%s', host, port);
});
app.get('/', function (req, res) {
res.send('Welcome!');
});
io.on('connection', function (socket) {
//console.log(socket.handshake.headers);
clients.push(socket);
socket.on('connect', function(msg){
console.log('PHPSESSID: ' + msg);
});
socket.on('chat', function(msg){
console.log('message: ' + msg);
});
socket.emit('chat', { hello: 'world' });
});
这是我的客户代码
<script>
$(function(){
var socket = io.connect('https://10.0.4.18:8020');
socket.emit('connect', { 'sessionId' : '<?php echo $_COOKIE['PHPSESSID']; ?>' });
$('#f').click(function(e){
e.preventDefault();
if($('#m').val() == '')
return;
socket.emit('chat', $('#m').val());
$('#m').val('');
return false;
});
socket.on('chat', function(msg){
$('#messages').append($('<li>').text(msg));
});
});
</script>
我希望将带有sessionId的json字符串打印到服务器的控制台。
如何从websocket传递/访问PHPSESSID值?