对于熟悉socket.io的人,假设我按以下方式存储数据:
socket.super_secret_data = "secret";
客户可以访问该数据吗?我特别关注它是否可由客户编辑。
答案 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()
对象上。