【问题标题】:WSS over Secure SSL connection fails only on FireFox with error 1006WSS over Secure SSL 连接仅在 FireFox 上失败,错误 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 正常工作

我不确定问题出在哪里.. 任何帮助表示赞赏!

【问题讨论】:

    标签: node.js ssl firefox websocket


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-18
      • 1970-01-01
      • 2022-01-19
      • 2016-03-11
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多