栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

socket.io /连接参数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

socket.io /连接参数

就在这里。

1)

query
就像
GET
参数一样,因此请替换
"param:value"
"param=value"
(如果您想传递多个参数,请像通常使用URL:一样进行操作
param=value&some_other_param=test

2)

handshaken
connection
处理程序中获取查询参数有一种更简单,更可靠的方法(因为没有访问对象的未定义属性的风险):

console.log(socket.handshake.query.param);

编辑:

学习完完整的代码后,我想我找出了导致问题的原因。问题是您可能误解了Socket.IO名称空间的主要思想。

我猜您

io.connect
在一页内有多个Socket.IO连接(调用),对吗?通常,一个连接就足够了。您的错误是您调用
io.connect
了鼠标事件,但是您应该在上调用一次
document.ready
,然后才发出
emit
声音。

看下面的代码(客户端):

$(document).ready(function() {    var socket = io.connect('', {query: 'name=something'});    // [...]    socket.on('some_event_from_server', function(data, cb) {});    // [...]    $('#someButton').click(function() {        socket.emit('markers_add', {some: 'data'});  //send `markers_add` message to server within main namespace    });    $('#someOtherButton').click(function() {        socket.emit('icon_sets_add', {some: 'thing'}, function(response) { //server may response to this request. see server side pre below        });    });});

服务器端代码:

io.on('connection', function(socket) {  //connection handler of main namespace    socket.on('markers_add', function(data) {   });    socket.on('icon_sets_add', function(data, cb) {        // do something        cb({some: 'response'});    });    // [...]    socket.emit('some_event_from_server', {});  //server sends a message to a client    //BTW, now it should be OK:    console.log(socket.handshake.query.name);});

如果您有一个名称空间,它应该可以工作。我实际上不知道这是Socket.IO的错误还是名称空间使用不当的结果,但是修改代码以仅创建一个名称空间应该可以解决问题。
因此,就您而言,您根本不必在握手时传递查询参数。
实际上,如果要使您的应用程序更安全,则必须使用查询参数。请参阅http://wlkns.co/node-js/socket-io-
authentication-tutorial-server-and-client/
(对于Socket.io 0.9)

希望我的回答对您有所帮助。祝好运!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/376687.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号