4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

koa@2でsocket.io

Last updated at Posted at 2016-11-03

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'}と表示されていれば成功です。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?