socket.io
はio.attachを使用して、後からhttpServerへ依存できます。
以下はnode app.js
でサーバーを立てながら、循環参照を避けて3つのファイルをmodule.exports
で輸出する例です。
javascript
1// app.js
2const createHttpServer = require('http').createServer
3const express = require('express')
4const io = require('./io')
5const routes = require('./routes')
6
7const app = express()
8const httpServer = createHttpServer(app)
9
10app.use(routes)
11io.attach(httpServer)
12
13if (module.parent == null) {
14 httpServer.listen(process.env.PORT || 59798, () => {
15 console.log('listen on port', httpServer.address().port)
16 })
17}
18
19module.exports = app
javascript
1// io.js
2const socketIo = require('socket.io')
3
4const io = socketIo()
5io.on('connect', function (socket) {
6 console.log(`1. connected. wait foo event by client(${socket.id})`)
7 socket.on('foo', function () {
8 console.log('3. receive foo event from client')
9 socket.send('4. receive bar message from server')
10 })
11 socket.on('message', function (message) {
12 console.log(message)
13 })
14})
15
16module.exports = io
javascript
1// routes.js
2const createRouter = require('express').Router
3const io = require('./io')
4
5const routes = createRouter()
6routes.get('/', (req, res) => {
7 io.emit('message', 'visit other client at `/`')
8 res.end(`
9 <script src="/socket.io/socket.io.js"></script>
10 <script>
11 var socket = io()
12
13 socket
14 .on('connect', function () {
15 console.log('2. connected. send foo event to server')
16 socket.emit('foo')
17 })
18 .on('message', function (message) {
19 console.log(message)
20 })
21 </script>
22 `)
23})
24
25module.exports = routes
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/06/15 13:15