WEBチャットアプリ開発 その1

javascript

プログラム説明

server.js

モジュールの読み込み

var express = require('express');
var app = express();
var createError = require('http-errors');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var mongoose = require('mongoose');
var fs = require('fs');
var https = require('https');
1行目  expressモジュールはNode.jsで利用できるWebアプリケーションフレームワークです。
expressをrequireで呼び出して、変数expressに代入しています。
2行目expressを変数appに代入することで初期化しています。
3行目http-errorモジュールによって404などのhttpエラーを簡単に作成出来ます。
4行目pathモジュールは、ファイルパスからディレクトリ名を取得したり、ファイル名だけを取得したりするような文字列としてのパスの操作が出来ます。
5行目リクエストに含まれるCookieを読み取るためにcookie-paser をExpressのMiddlewareに設定します。
6行目morganライブラリを使用することで簡単にログ出力出来ます。
7行目mongooseとはnode.jsでmongoにアクセスしたり保存したりするのをとても簡単にしてくれるライブラリです。
8行目fsモジュールはファイルを扱うためのモジュールです。
9行目expressをhttpsで起動するためのモジュールです。

インストールコマンド

npm install express --save
npm install express --http-errors
npm install express --cookie-parser
npm install -g npm
npm install mongoose --save
npm install mongoose-sequence --save
npm init --yes
npm install ejs --save

Express HTTPSサーバーを起動する

var ssl_server_key = '/etc/letsencrypt/live/####/privkey.pem';
var ssl_server_crt = '/etc/letsencrypt/live/####/cert.pem';
var options = {
        key: fs.readFileSync(ssl_server_key),
        cert: fs.readFileSync(ssl_server_crt)
};
var https_server = https.createServer( options,app );
1行目 秘密鍵の保存場所を指定。
2行目証明書の保存場所を指定
7行目createServerソッドを呼び出してhttp.Serverオブジェクトを作成します。

ルーティング処理の呼び出し先(*.js保存場所)を追加

var routerLogin    = require('./routes/login');		
var routerRegister = require('./routes/register');
var routerList     = require('./routes/list');
var routerChat	   = require('./routes/chatapp');
var routerError    = require('./routes/errorpage');
var routerApi      = require('./routes/api');
var routerLogout   = require('./routes/logout');
1行目 ログイン処理。
2行目ユーザー登録処理。
3行目
4行目
5行目
6行目
7行目ログアウト処理。

変数宣言

var MyID = "";
var MyName ="";
var FrID = "";
var FrName ="";
var botTimer;
1行目
2行目
3行目
4行目
5行目

node.jsでejsというview engineを使用する

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
1行目 ejsファイル保存場所
2行目ejsというview engineを指定。

ExpressのMiddlewareを設定

app.use(logger('dev'));
app.use(express.urlencoded({ extended: true, limit: '10mb' }));
app.use(express.json({ extended: true, limit: '10mb' }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
1行目 開発用レスポンズステータスによって色づけされたログ出力を指定。
2行目Body-Parserを基にExpressに組み込まれた機能です、クライアントから送信されたデータを、req.body経由で会得、操作できます。
3行目パラメータのパース方法を設定
4行目リクエストに含まれるCookieを読み取るために cookie-parser をExpressのMiddlewareに設定します。
5行目静的ファイルが配置されているディレクトリを設定

ルーティング処理の登録

app.use('/', routerLogin);
app.use('/auth', routerLogin);
app.use('/register', routerRegister);
app.use('/home', routerList);
app.use('/chat', routerChat);
app.use('/errorpage', routerError);
app.use('/api/messages', routerApi);
app.use('/logout', routerLogout);
1行目 ログイン処理。
2行目ログイン処理。
3行目ユーザー登録処理。
4行目
5行目
6行目
7行目
8行目ログアウト処理。

error handler

app.use(function(req, res, next) {
  next(createError(404));
});
app.use(function(err, req, res, next) {
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};
  res.status(err.status || 500);
  res.render('error');
});
1行目
4行目

ポート8445で待ち受け

https_server.listen(8445, () => {
    console.log("起動しました ポート8445");
});
module.exports = app;
1行目指定したポート番号でWeb(express)サーバーを起動する。
2行目
3行目
4行目
5行目

参考サイト

ユーザー登録・データ添付などの機能を備えたチャットアプリ開発手順が記載されたサイト

Node.js ExpressをHTTPSするときに参考にしたサイト

使用しているモジュールを理解すたるために参考にしたサイト

body-parser

MongoDB

Cookie

pathモジュール

cookie-parserモジュール

morganモジュール

fsモジュール
httpsモジュール
JSON関連

EJS

コメント