前提・実現したいこと
Socket.ioを使用するexpressアプリを作っています。
Socket.IOとexpressを統合?する方法をお聞きしたいです。
発生している問題
現在ローカルで開発を進めています。expressのサーバーはポート3000番、Socket.IOはポート8888番で起動しています。
そこで質問なのですが、これらを例えばポート3000番で公開されるようにサーバーを統合することはできますでしょうか?具体的なには、https://example.com:3000/socket.io/ならsocket.ioで処理、それ以外ならexpressのルーターで処理するイメージです。こういったことは可能でしょうか?より一般的な方法があればそちらもご教授いただけると幸いです。
該当のソースコード
app.js(アプリ本体)
const createError = require('http-errors'); const express = require('express'); const path = require('path'); const cookieParser = require('cookie-parser'); const logger = require('morgan'); require('dotenv').config(); //環境変数のロード const bodyParser = require('body-parser'); const indexRouter = require('./routes/index'); const apiRouter = require('./routes/api'); const app = express(); const socket = require('./routes/modules/socket.js'); //Socket.io // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); app.use(logger('dev')); app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use(bodyParser.urlencoded({extended: true})); app.use(bodyParser.json()); app.use('/', indexRouter); app.use('/api/', apiRouter); // catch 404 and forward to error handler app.use(function(req, res, next) { next(createError(404)); }); // error handler app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page res.status(err.status || 500); res.render('error'); }); module.exports = app;
socket.js(Socket.IOの処理)
const http = require("http"); const server = http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/html'}); res.end("server connected"); }); const PORT = 8888; server.listen(PORT); const io = require("socket.io").listen(server); io.set('heartbeat interval', 5000); io.set('heartbeat timeout', 15000); io.sockets.on('connection', function(socket){ //---省略----- });
補足情報(FW/ツールのバージョンなど)
node v12.8.2
あなたの回答
tips
プレビュー