node.jsで使われているサーバーアプリケーションにkoaと言うものがあります。
generatorベースだった1.x系から大幅な変更がなされ、async/awaitベースになったkoa@2.x系でsocket.ioを起動させてみます。
koaおよび必要なプラグインのインストール
koaの主流のバージョンは1.x系なので2.x系をインストールするにはバージョンの指定が必要です。
npm i koa@2
npm i koa-static
今回はとりあえず静的ファイルを送れればいいのでkoa-sataticを使っています。
ほかのミドルウェアを使う場合は、koaのwikiでsupports v2にチェックがついているものを使ってください。
ソースコード
今回の構成は
projectroot
|-client
| |-index.html
| |-index.js
|-server
|-server.js
という感じになっています
server.js
const Koa = require('koa');
const serve = require('koa-static');
const app = new Koa();
app.use(serve('../client'));
const server = app.listen(3000);
const io = require('socket.io').listen(server);
io.on('connection', (socket) => {
socket.emit('popo',{po:'poppopopo'});
});
index.html
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
<script src="index.js"></script>
</head>
</html>
index.js
var socket = io('http://localhost:3000');
socket.on('popo', function (data) {
console.log(data);
});
koa-staticでapp.use(serve('../client'))
とすると、
index.htmlにhttp://localhost:3000/index.html でアクセスできるようになります。
これでnpm start
でサーバーを起動してhttp://localhost:3000/index.html にアクセスしコンソールに{po:'poppopopo'}と表示されていれば成功です。