socket.variable = data`形式的socket.io值是否可以访问客户端?

时间:2017-07-25 02:51:58

标签: javascript socket.io

对于熟悉socket.io的人,假设我按以下方式存储数据:

socket.super_secret_data = "secret";

客户可以访问该数据吗?我特别关注它是否可由客户编辑。

2 个答案:

答案 0 :(得分:0)

如果在服务器上,那么没有。只有您从服务器明确发出的数据才会被发送到客户端。如果您在chrome中运行客户端,您实际上可以在开发人员控制台中看到服务器发出的所有数据。 Debugging WebSocket in Google Chrome

答案 1 :(得分:0)

socket.io {% for user in users %} {% for img in user.images.all %} <img src="{{img.url}}" /> {% endfor %} {% endfor %} 对象是客户端和服务器上完全不同的对象。虽然它们各自代表相同TCP连接的相反端,但它们在完全不同的JS引擎中是完全不同的对象(实际上,任何一端都可以用许多不同的语言运行)。

因此,您在其中设置的自定义属性不会以任何方式反映在另一个属性中。服务器属性对服务器端socket对象保持私有,客户端属性对客户端socket对象保持私有。初始化连接后,来回发送的唯一数据是您明确socket到套接字另一端的数据。

  

客户可以访问该数据吗?我特别关注它是否可由客户编辑。

不,客户无法访问。该属性仅在服务器端.emit()对象上。