php:apache80端口 nodejs:8888端口 通过nodejs的socket.io模块专门处理即时通信接口 我现在是这么处理的,php中的html页面加载socket.js然后 socket = io.connect(‘localhost:8888’); 监听8888端口 因为需要一个私聊功能 所以必须有一个客户端用户验证 但是发现在localhost/demo.php页面运行之后不会生成connect.sid的cookie 但是运行localhost:8888却有 所以我单独设置了个client_id的cookie 虽然能够实现,但是不是很安全
io.set('authorization', function(handshakeData, callback){
handshakeData.cookie = cookie.parse(handshakeData.headers.cookie);
var client_id = handshakeData.cookie['client_id'];
callback(null, true);
});
如果不加callback(null,true),那么好像验证不通过,然后就不会执行了,所以很无奈… 还有就是这个有没有什么其他好的办法呢? 求指导
你的http server和socket server是分离的,不大好协作,这样可以不: client socket和server socket建立连接后后台生成一个id,然后再回传给client socket,通过这个id来唯一标识每个客户端
@italkboy 嗯,我刚准备这样,http://roguejs.com/2011-08-08/node-js-socket-io-php/这个好像就是这样的…这样好像就能做到唯一 话说那个authorization是干吗的…貌似不加也行
@italkboy 额…但是我在php端运行的时候,根本没有connect.sid这个cookie,而且我模拟get那个localhost:8888页面,好像http头有set这个cookie,但是实际上好像还是没有,神马cookie都木有,情何以堪啊