给socket.io添加一个自定义属性,在服务端获取这个值
Posted
技术标签:
【中文标题】给socket.io添加一个自定义属性,在服务端获取这个值【英文标题】:Add a custom attribute to socket.io and get this value in the server 【发布时间】:2016-04-08 05:36:02 【问题描述】:我正在尝试使用自定义值将属性扩展到客户端的 socket.io,例如:
var socket = io();
socket.customAttr = "123"
并在节点服务器中获取此值,但我在客户端扩展此功能,但在服务器中始终为undefinded
。
是否存在将 customAttributes 添加到我的 socket.io 的方法?
【问题讨论】:
服务器端/客户端套接字是两个完全不同的实体。没有办法扩展套接字库以能够共享这样的值,如果您可以通过这样做更具体地说明您要完成的工作,那么可能更容易获得更准确的答案 您需要将值从服务器发送到客户端套接字并在客户端存储该值。 客户端和服务器都是不同的上下文。您可以做的是将您的自定义属性发送到您的服务器,然后让服务器存储该属性。可能在一个对象或数组中 打开连接时不能简单的给socket对象增加一个附加属性吗? 不,不可能,正如@Datsik 所说:服务器端/客户端套接字是两个完全不同的实体。没有办法扩展套接字库以能够共享这样的值 【参考方案1】:对于那些为这个老问题找到解决方案的人:现在(v4.x)你可以使用socket.handshake.query
。
客户:
import io from "socket.io-client";
const socket = io( query: x: 42 );
服务器:
io.on("connection", (socket) =>
console.log(socket.handshake.query); // prints x: "42"
);
【讨论】:
以上是关于给socket.io添加一个自定义属性,在服务端获取这个值的主要内容,如果未能解决你的问题,请参考以下文章
Quasar Vue Socket.io Laravel-Echo 实现