My website runs on https/ssl (valid CA certificate) on IIS 10.0 (iisnode 0.2.21) / node/express. I am using a websocket server on top of https server (same port)
However the websocket connection works very well for CHrome and IE11. It fails only for Firefox (version 80) with error code 1006 (error details)
in Inspector / Network console, it gives the following errorerror as shown in network under inspector console
In the web.config file, I have added the following line <webSocket enabled="false"/>
app.js code is as below:
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);
In my Websocket route, I use the following code
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;
...}
}); });
At the client end I connect var socket = new WebSocket('wss://<host>:443/ws?request_type=init&usr='+UserID+'&connid='+connectTime+'&pageid='+page_ID);
All this works as expected for Chrome and IE11 except firefox
I am not sure where the issue is.. any help is appreciated!
Finally got the WSS working on Firefox with help of the note found in iisnode githun ([https://github.com/tjanczuk/iisnode/issues/497][1]) !. Issue seemed to be with iisnode configuration, In addition t , i had create a HTTP_CONNECTION server variable and add rewrite rules as below,
<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
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments