fcs
2025-04-10 0163870d662dc5b7d69ceff977490ede594f7d82
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
 
const fs = require( 'fs' )
const path = require( 'path' )
 
const Koa = require( 'koa' )
const IO = require( '../' )
const co = require( 'co' )
 
const app = new Koa()
const io = new IO()
 
io.attach( app )
 
/**
 * Koa Middlewares
 */
app.use( async ( ctx, next ) => {
  const start = new Date
  await next()
  const ms = new Date - start
  console.log( `${ ctx.method } ${ ctx.url } - ${ ms }ms` )
})
 
 
/**
 * App handlers
 */
app.use( ctx => {
  ctx.type = 'text/html'
  ctx.body = fs.createReadStream( path.join( __dirname, 'index.html' ) )
})
 
/**
 * io middlewares
 */
io.use( async ( ctx, next ) => {
  console.log( 'io middleware' )
  const start = new Date
  await next()
  const ms = new Date - start
  console.log( `WS ${ ms }ms` )
})
io.use( async ( ctx, next ) => {
  ctx.teststring = 'test'
  await next()
})
 
/**
 * io handlers
 */
io.on( 'connection', ctx => {
  console.log( 'Join event', ctx.socket.id )
  io.broadcast( 'connections', {
    numConnections: io.connections.size
  })
})
 
io.on( 'disconnect', ctx => {
  console.log( 'leave event', ctx.io.id )
  io.broadcast( 'connections', {
    numConnections: io.connections.size
  })
})
io.on( 'data', ( ctx, data ) => {
  console.log( 'data event', data )
  console.log( 'ctx:', ctx.event, ctx.data, ctx.socket.id )
  console.log( 'ctx.teststring:', ctx.teststring )
  ctx.socket.emit( 'response', {
    message: 'response from server'
  })
})
io.on( 'numConnections', packet => {
  console.log( `Number of connections: ${ io.connections.size }` )
})
 
 
const PORT = 3000
app.listen( 3000, () => {
  console.log( `Listening on ${ PORT }` )
} )