Имеем следующий код сервера:
var https = require('https'),
fs = require('fs');
const opts = {
key: fs.readFileSync('/home/admin/conf/web/ssl.key'),
cert: fs.readFileSync('/home/admin/conf/web/ssl.crt')
}
var app = https.createServer(opts);
var io = require('socket.io').listen(app);
app.listen(8091, function(){
console.log("HTTPS on port " + 8091);
})
Я его менял уже несколько раз, до этого был express но суть та же.
На клиенте:
var socket = io.connect(':8091');
И при заходе на страницу:
WebSocket connection to 'wss://domain:8091/socket.io/?EIO=3&transport=websocket&sid=zDddBcCarJyExmO9AAAD' failed: WebSocket is closed before the connection is established.
Куда копать? С чем может быть связанна эта проблема?
ps: как показал практика дело в кодировке, но не ясно где конкретно проблема.
Если пользователь с русским именем и фамилией заходит, такая проблема, если с английскими то всё хорошо. Если в чат накидать сообщение то при обновлении страницы и подгрузке истории так сказать, можно словить:
socket.io.js:6783 Uncaught Error: Illegal attachments
at decodeString (socket.io.js:6783)
at Decoder.add (socket.io.js:6731)
at Manager.ondata (socket.io.js:418)
at Socket. (socket.io.js:1512)
at Socket.Emitter.emit (socket.io.js:4389)
at Socket.onPacket (socket.io.js:2514)
at XHR. (socket.io.js:2331)
at XHR.Emitter.emit (socket.io.js:4389)
at XHR.Transport.onPacket (socket.io.js:2947)
at callback (socket.io.js:3821)
pss: Даже стыдно писать причину проблемы, старая версия socket.io на клиентской части, так как в локалке и сервер давно не обновлял, а после переноса с гита на vps получилось что сервер самый последний, а клиент с былых времён)))