记录使用websocket时因为Sec-Websocket-Protocol遇到的一个问题
前言
最近在做的项目中用到了websocket,在谷歌浏览器中显示正常,别人在百度浏览器打开,没有数据显示,百度浏览器是ie内核,开始时先想到的是websocket的兼容性,结果证实websokcet是支持ie的。
百度浏览器的报错
WebSocket connection to 'wss://://pusher.rising.com/app/4a530ae5e37bb480c08b?protocol=7&client=js&version=2.2.
0&flash=false' fai failed: Error during WebSocket handshake: Sent non-empty 'Sec-WebSocket-Protocol' header
but no response was received
复制代码
直译过来是因为websocket握手时,发了一个不为空的头,Sec-WebSocket-Protocol
,但是没有接受这个头的响应。 所以将问题焦点聚集在了Sec-WebSocket-Protocol
。
百度和谷歌浏览器请求投的差异
同一个请求谷歌浏览器的请求头是没有Sec-WebSocket-Protocol
这个字段的,而百度浏览器是传了一个undefined。原因大致明了,因为Sec-WebSocket-Protocol
传值造成的。
声明websocket的方法
var Socket = new WebSocket(url, [protocol] );
复制代码
以上代码中的第一个参数 url, 指定连接的 URL。第二个参数 protocol 是可选的,指定了可接受的子协议,是可选的。当我们给proctocol传递一个为空的变量时,谷歌浏览器会自动过滤掉值为空的请求头,儿百度浏览器会将undefind传递过去。
解决方法
很简单,穿第二个参数的时候加一层判断,如果为空,就只传一个参数就可以了。
转载于:https://juejin.im/post/5be2b51d51882516df0306ba
记录使用websocket时因为Sec-Websocket-Protocol遇到的一个问题相关推荐
- Nginx代理webSocket时60s自动断开, 怎么保持长连接
利用nginx代理websocket的时候,发现客户端和服务器握手成功后,如果在60s时间内没有数据交互,连接就会自动断开,如下图: 为了保持长连接,可以采取来两种方式. 1.nginx.conf 文 ...
- Asp.net webApi 通过WebSocket推送消息给客户端,搭建一个即是服务端又是客户端的服务
Asp.net webApi 通过WebSocket推送消息给客户端,搭建一个即是服务端又是客户端的服务_IT_ziliang的博客-CSDN博客 WebSocket是一种在单个TCP连接上进行全双工 ...
- WebSocket协议入门:WebSocket API
HTML5连接性领域包括WebSocket.服务器发送事件和跨文档消息传递(Cross-Document Messaging)等技术.在HTML5之前,浏览器窗口和框架之间的通信由于安全的原因而受到限 ...
- 认识HTML5的WebSocket 认识HTML5的WebSocket
2019独角兽企业重金招聘Python工程师标准>>> 在HTML5规范中,我最喜欢的Web技术就是正迅速变得流行的WebSocket API.WebSocket提供了一个受欢迎的技 ...
- websocket之二:WebSocket编程入门
一.WebSocket客户端 websocket允许通过JavaScript建立与远程服务器的连接,从而实现客户端与服务器间双向的通信.在websocket中有两个方法: 1.send() 向远程服务 ...
- MySQL 当记录不存在时insert,当记录存在时update
MySQL 当记录不存在时insert,当记录存在时更新 网上基本有三种解决方法. 第一种: 示例一:insert多条记录 假设有一个主键为 client_id 的 clients 表,可以使用下面的 ...
- python websocket库 安装_Python WebSocket
安装 pip install websocket-client 先来看一下,长连接调用方式: ws = websocket.WebSocketApp("ws://echo.websocket ...
- mysql插入实现存在更新_mysql 记录不存在时插入 记录存在则更新的实现方法
mysql 记录不存在时插入在 MySQL 中,插入(insert)一条记录很简单,但是一些特殊应用,在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,本文介绍的就是这个问 ...
- mysql 主机不存在_MySQL 当记录不存在时插入,当记录存在时更新
MySQL 当记录不存在时插入,当记录存在时更新 2012-1-30 17:58 Monday 分类:MySQL 评论(71) 浏览(21592) MySQL 当记录不存在时插入,当记录存在时更新 网 ...
- MySQL 当记录不存在时insert,当记录存在时update(ON DUPLICATE KEY UPDATE, REPLACE语句)...
MySQL 当记录不存在时insert,当记录存在时更新 网上基本有三种解决方法. 第一种:示例一:insert多条记录 假设有一个主键为 client_id 的 clients 表,可以使用下面的语 ...
最新文章
- R语言ggplot2可视化:ggplot2可视化时间序列数据并在末尾数据点添加数值标签(number label)
- .h头文件 .lib动态链接库文件 .dll 动态链接库
- postgres创建用户,修改用户密码,创建数据库
- driver: linux2.6 内核模块导出函数实例(EXPORT_SYMBOL)
- android自定义组件属性,android自定义控件并添加属性的方法以及示例
- python编写arcgis脚本_ArcGis Python脚本——批量添加字段
- 苹果iOS 11.3.1正式发布,修复iPhone 8触屏bug
- 数据挖掘:模型选择——树模型
- 如何在普通 UIViewController 中使用 UITableView
- 微型计算机常用的分区格式,教你分出整数的硬盘分区
- 英语句子划分表示符号使用规则
- 后缀–ize_英语常用后缀-ize
- 【错误记录】Google Play 上架报错 ( 此版本不符合 Google Play 关于提供 64 位版本应用的要求。| 如果提供 x86 架构动态库则必须提供 x86_64 架构的动态库 )
- demo解析 小程序node.js_小程序基于疼讯qcloud的nodejs开发服务器部署
- Oracle从入门到精通(笔记)
- Bussiness Card Design
- 区块链共享数据架构设计
- 特征提取与检测6-SURF特征检测
- python实现读取文件英文词频统计并写入到文件
- 用Python代码画一个足球(附完整代码)