WSS over Secure SSL 连接仅在 FireFox 上失败,错误 1006
Posted
技术标签:
【中文标题】WSS over Secure SSL 连接仅在 FireFox 上失败,错误 1006【英文标题】:WSS over Secure SSL connection fails only on FireFox with error 1006 【发布时间】:2020-09-19 07:29:11 【问题描述】:我的网站在 IIS 10.0 (iisnode 0.2.21) / node/express 上的 https/ssl(有效 CA 证书)上运行。我在 https 服务器(相同端口)之上使用 websocket 服务器
但是,websocket 连接对于 CHrome 和 IE11 非常有效。它仅对 Firefox(80 版)失败,错误代码为 1006 (error details)
在 Inspector / Network 控制台中,它给出以下错误error as shown in network under inspector console
在 web.config 文件中,我添加了以下行
<webSocket enabled="false"/>
app.js 代码如下:
var cors = require('cors');
var createError = require('http-errors');
var cookieParser = require('cookie-parser');
const https = require("https");
// var app = express();
var app = require('express-ws-routes')();
.....
var wsRouter = require("./routes/wsRoute"); // route for Websocket
....
app.use('/ws', wsRouter);
....
app.listen(process.env.PORT || 443);
在我的 Websocket 路由中,我使用以下代码
router.websocket('/', function(info, cb, next)
var connid = info.req.query.connid;
var pgid = info.req.query.pageid;
cb(function(socket)
// socket is connected
socket.send(JSON.stringify('response_type':'WSConnActive',
'response':"status":"success","details":"Welcome Message","reqOrigin":"Home","welcomeMsg":'Hello '+usr+', Welcome! you are now connected!'));
....
socket.on('message', function incoming(message) // handle message
socket.on("close", function socketClose(ws)
console.log(info.req.query.usr+" closed session at "+moment().format("YYYY-MM-DD HH:mm:ss"));
var usrClose = info.req.query.usr;
...
); );
在客户端我连接
var socket = new WebSocket('wss://<host>:443/ws?request_type=init&usr='+UserID+'&connid='+connectTime+'&pageid='+page_ID);
除了 firefox 之外,所有这些都对 Chrome 和 IE11 正常工作
我不确定问题出在哪里.. 任何帮助表示赞赏!
【问题讨论】:
【参考方案1】:借助 iisnode githun ([https://github.com/tjanczuk/iisnode/issues/497][1]) 中的注释,终于让 WSS 在 Firefox 上运行了!问题似乎与 iisnode 配置有关,此外,我还创建了一个 HTTP_CONNECTION 服务器变量并添加了如下重写规则,
<match url="ws/*" />
<serverVariables>
<set name="HTTP_CONNECTION" value="Upgrade" />
</serverVariables>
<action type="Rewrite" url="websocket-server.js" />
</rule> ```
[1]: https://github.com/tjanczuk/iisnode/issues/497
【讨论】:
以上是关于WSS over Secure SSL 连接仅在 FireFox 上失败,错误 1006的主要内容,如果未能解决你的问题,请参考以下文章
在 SSL WebSocket 连接 (wss) 中拦截请求
mqtt使用WebSocket over TLS(wss)握手失败
使用多域 SSL SAN 证书无法在 Chrome 中建立 wss websocket 连接
EMQx Mqtt Broker WSS Web套接字连接失败,我正在使用Letsencrypt SSL Certbot
Fortify Audit Workbench Cookie Security: Cookie not Sent Over SSL