Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

关于WebSocket的一些看法

  虽然各大浏览器的最新版本都支持WebSocket了,但是我觉得它是个很糟糕的协议。RFC6455只告诉我们要如何使用这个协议和使用时的一些注意事项。并没有告诉我们这个协议为什么要这样制定,很多东西感觉都是多余的,但是它又不能给出明确的解释。
  WebSocket是哪个层的协议?
  总感觉WebSocket有点不伦不类,它的过程基于TCP,但又是从HTTP提升而来,实现上应该归为应用层协议。但它的功能又完全是作为数据传输用的,在功能上又应该归为传输层协议。作为应用层协议,它的功能太弱了。作为传输层协议,又不如直接使用TCP来的方便。既然提出的初衷是解决Web通信的问题,为什么不直接引入个TCP层的API呢?
  不科学的握手机制
  WebSocket握手机制让人非常费解,RFC6455中并没告诉我们为什么需要这么繁琐而又幼稚的握手。WebSocket只是建立在TCP上的协议,TCP连接本身已经握了三次手,你还有什么必要再握手吗?退一步说,即使真的需要个握手机制,那这个握手机制能不设计的这么幼稚吗?一个KEY加一个固定字符串做SHA1之后再BASE64,这既起不到加密的作用也起不到识别客户端的作用,我实在想不明白为什么要这么做。
  不科学的传输机制
  客户端传给服务器的数据需要用4个字节的MaskCode平铺到数据部分上做异或运算,这是要防止数据明文传输吗?但是MaskCode本身就是明文传输的,用它加密数据有什么意义吗?更何况服务器端传给客户端的数据帧根本没有这个操作,如果是为了加密,只加密一端的数据算个啥?
  现实
  也许是我对它的了解还不够深入吧,到现在依然觉得WebSocket协议的设计很不科学。它作为应用层协议太弱,作为传输层协议太乱。但既然各大浏览器已经实现了WebSocket的兼容,在实际项目中还是有点儿实用价值的。虽然这篇文章是喷它的,但我更希望错的是我,而不是WebSocket。
网名:
34.203.245.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^