如何屏蔽websockets?

时间:2017-05-31 20:56:32

标签: javascript node.js websocket

我正在尝试用JavaScript编写一个客户端,将websockets发送到node.js / ws服务器。经过大量阅读后,我了解到RFC有用甚至要求屏蔽从客户端发送到服务器的所有数据,但我不明白该怎么做。

我找到了一些像这样的文章:

http://www.htmlgoodies.com/html5/tutorials/making-html5-websockets-work.html

但我找不到任何起点或甚至是掩盖数据的功能。我真的不太了解掩蔽的概念。库/函数会很有用。我挣扎了这个问题一段时间没什么...... 如果我屏蔽了它发送的数据,我需要取消屏蔽'在服务器端? 你有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果您尝试从浏览器Javascript到服务器建立webSocket连接,然后通过该webSocket连接发送数据,您只需使用内置的webSocket支持进入浏览器。您只需调用socket.send(),底层的webSocket支持将为您执行所有webSocket协议信息(包括屏蔽)。

如果您正在尝试从node.js建立到其他服务器的webSocket连接,那么最好在NPM上获取node.js的许多webSocket库之一并使用其中之一。然后,这些库将为您执行所有webSocket协议信息(包括屏蔽)。

如果您尝试在自己的nodejs服务器上接受传入的webSocket连接,那么您同样可以使用node.js的几个webSocket服务器库之一,该库将为您处理所有屏蔽。

您只能将webSocket客户端连接到webSocket服务器,因为两端必须使用webSocket连接方案,然后支持webSocket协议,数据框架和安全方案。除非您出于学术原因或尝试在没有通用支持的平台上实现webSockets,否则实现您自己的webSocket库是很少见的。协议有各种变化(由于规范的演变,以及正确支持和测试完整实现所能完成的所有工作的大量工作)。

  

所以我明白,如果我将websocket从非ssl网站发送到ssl服务器,我仍然需要屏蔽数据,对吗?

你似乎有点困惑。两个端点之间的连接是否为SSL。您不能使用SSL建立连接的一端,而另一端不使用SSL。 webSocket连接(两端)可以正常运行或使用SSL。 webSocket规范要求客户端屏蔽所有数据,但这将由您正在使用的任何webSocket客户端库自动完成。这不是你,因为使用webSocket库的客户端应该关注你自己。

非SSL网页(通过不使用SSL的常规http加载的页面)可以与一些也支持SSL的webSocket服务器建立SSL webSocket连接。