Node.js Expressを使ってリアルタイム通信を可能にするSocket.IOの使い方

簡単にリアルタイム通信が実装できるsocket.ioをインストールして、簡易的なチャット風アプリの作成手順
環境
- OS CentOS Linux release 8.0.1905 (Core)
- node V10.16.3
- npm 6.9.0
- express 4.17.1
- socket.io 2.3.0
プロジェクト作成
適当なディレクトリを作成します
mkdir socket-project
cd socket-project
モジュールをインストールします
npm init -y
npm i -S express socket.io
Socket.IO使い方
socket-project配下にindex.jsを下記の内容で編集します
const app = require('express')();
const http = require('http').Server(app);
const io = require('socket.io')(http);
const PORT = process.env.PORT || 3000;
app.get('/', function (req, res) {
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function (socket) {
socket.on('send message', function (msg) {
io.emit('new message', msg);
});
});
http.listen(PORT, function () {
console.log('server start');
});
socket-project配下にindex.htmlを下記の内容で編集します
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
</head>
<body>
<div class="container" style="margin-top:50px;">
<div class="form-group">
<form>
<input type="text" id="msg" class="form-control" />
<button class="btn btn-primary">送信</button>
</form>
</div>
<ul id="messages" class="list-group list-group-flush"></ul>
</div>
<script>
const socket = io();
$(function () {
$('form').submit(function () {
socket.emit('send message', $('#msg').val());
$('#msg').val('');
return false;
});
socket.on('new message', function (msg) {
$('#messages').append($('<li class="list-group-item">').text(msg));
});
});
</script>
</body>
</html>
起動します。
node index.js
ブラウザから http://プライベートIP:3000 にアクセスすると、チャット風な動作が確認できます。

-
前の記事
Nuxt.jsで実装したWebサイトをNetlifyにデプロイする手順 2019.12.25
-
次の記事
Windows Server2012R2 プリンター追加時に、「プリンターをインストールできませんでした。この名前の別のプリンターまたはプリンター共有が、既に存在します」が発生してインストールできない場合の対処法 2019.12.26
コメントを書く