JavaScript
Socket.io

Socket.ioをサブディレクトリ(リバースプロキシ)で動かす

More than 1 year has passed since last update.

ローカルで動いていたスクリプトがサーバで動かなかったのでメモ。

2017/11/04 記事作成
2017/11/12 コメントを追加

Before

server.js
var http    = require('http');
var server  = http.createServer(response);
var io      = require('socket.io')(server);
// --- 処理 ---
server.listen(3000);
client.js
const socket = io();

After

server.js
var http    = require('http');
var server  = http.createServer(response);
var io      = require('socket.io')(server);
// サブディレクトリのパスを指定する。
io.path('/subdir');
// --- 処理 ---
server.listen(3000);
client.js
// pathを指定する。
const socket = io({path: '/subdir/socket.io/'});

原因

通常、Socket.ioはインスタンス生成後接続先をサーバのルートに探しに行くので、サブディレクトリで切っていると/socket.io/にアクセスできずに404を返す。
そこで、正しいパスをそれぞれに設定してあげるとうまく動く。

質問はお気軽に

コメント欄にどうぞ。
Twitterのほうが返信が早いです↓
Twitter - @kznr_luk