古いバージョンの Safari で socket.io に接続すると、次のエラーが表示されます。
Error during WebSocket handshake: location mismatch: wss://domain.com/node/socket.io/1/websocket/id != wss://localhost:81/node/socket.io/1/websocket/id
最新バージョンの Safari は問題なく動作するようです。firefox と chrome で問題なく接続できました。
サーバー側のコードは次のとおりです。
var io = require('socket.io').listen(81, {resource: '/node/socket.io', secure: true});
クライアント側のコードは次のとおりです。
socket = io.connect('https://domain.com/', {resource: 'node/socket.io', secure: true, 'connect timeout': 1000});
私はnginxを介してこれをルーティングしています:
location /node {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://localhost:81;
}
このエラーを修正して古いバージョンの Safari で動作させるにはどうすればよいですか?