微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaScript和WebSockets:使用特定协议

我目前正在使用WebSockets和 PHP服务器:它适用于谷歌Chrome和Opera,但不适用于Firefox 6.

我认为这是由于最后一次使用的协议版本:我看到它使用的是第七版,而对于Google Chrome和Opera来说它是较旧版本.

因此,我修改了我的服务器代码以管理这个新版本:通过使用258EAFA5-E914-47DA-95CA-C5AB0DC85B11和其他东西散列安全密钥,Firefox成功连接.
但是如果另一个客户想要连接(甚至是另一个Firefox),那么第一个用Firefox连接自己.

我看到socket_recv()收到的缓冲区为空或散列…

所以我决定跳过管理Firefox 6使用的协议的想法(互联网上没有文档……!):我认为指定直接在JavaScript中使用的协议可能更容易.

this page他们说我们可以这样写:

var mySocket = new WebSocket("http://www.example.com/socketserver","my-custom-protocol");

但是为了使用Google Chrome和Opera管理的协议,我们应该编写什么而不是“my-custom-protocol”?

提前致谢!

解决方法

WebSocket构造函数的协议选项实际上是一个“子协议”(通常由该名称调用),它是一个应用程序级子协议.它对实际的WebSocket协议版本没有任何影响.浏览器基本上支持单个版本的WebSocket协议本身.大多数服务器都支持多种版本的协议.

Firefox 6.0引入了对新HyBi系列协议的支持(HyBi-00实际上只是Hixie-76协议的一个副本). HyBi版本为数据引入了新的帧格式,而不仅仅是对握手的改变. Chrome 14还使用了新的HyBi协议系列.

这是最新版本的WebSockets协议:http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-14尽管firefox 6.0实际上是这一个http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-07,但实际上没有那么多真正的变化(主要是对规范本身的文本更改).

你确定firefox连接成功(即你实际上是否在浏览器中获得了一个onopen事件)?

原文地址:https://www.jb51.cc/js/150594.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐