importexpressfrom'express'importpathfrom'path'importhttpfrom'http'importsocketIOfrom'socket.io'importLuckyNumbersGamefrom'./luckyNumbersGame'constport:number=3000classApp{privateserver:http.Serverprivateport:numberprivateio:socketIO.Serverprivategame:LuckyNumbersGameconstructor(port:number){this.port=portconstapp=express()app.use(express.static(path.join(__dirname,'../client')))app.use('/jquery',express.static(path.join(__dirname,'../../node_modules/jquery/dist')))app.use('/bootstrap',express.static(path.join(__dirname,'../../node_modules/bootstrap/dist')))this.server=newhttp.Server(app)this.io=newsocketIO.Server(this.server)this.game=newLuckyNumbersGame()this.io.on('connection',(socket:socketIO.Socket)=>{console.log('a user connected : '+socket.id)socket.on('disconnect',function(){console.log('socket disconnected : '+socket.id)})socket.on('chatMessage',function(chatMessage:ChatMessage){socket.broadcast.emit('chatMessage',chatMessage)})})}publicStart(){this.server.listen(this.port)console.log(`Server listening on port ${this.port}.`)}}newApp(port).Start()
<!DOCTYPE html><htmllang="en"><head><metacharset="utf-8"/><title>TypeScript Socket.IO Course</title><metaname="viewport"content="width=device-width, initial-scale=1"/><linkrel="stylesheet"href="bootstrap/css/bootstrap.min.css"/><style>.gamePanel{position:relative;border:solid1pxgray;height:382px;border-radius:0px20px4px20px;box-shadow:15px10px#dddddd;}#gamePanel0{display:block;background:linear-gradient(180deg,rgba(195,112,34,0.164)0%,rgba(156,200,105,0.495)100%);}#gamePanel1{display:none;background:linear-gradient(56deg,rgba(225,238,255,0.492)0%,rgba(122,67,250,0.495)100%);}#gamePanel2{display:none;background:linear-gradient(56deg,rgba(235,204,32,0.492)0%,rgba(251,188,106,0.495)100%);}.chatPanel{border:solid1pxgray;border-radius:20px0px4px4px;box-shadow:15px10px#dddddd;background:rgb(34,193,195);background:linear-gradient(56deg,rgba(34,193,195,0.49193275943189773)0%,rgba(253,187,45,0.494733879880077)100%);position:relative;}.chatMessageInputDiv{position:absolute;bottom:0px;width:100%;}.messages{padding-left:0;overflow:hidden;height:340px;margin-bottom:40px;}.messagesli{list-style-type:none;margin-bottom:30px;padding:6px6px6px6px;display:block;}.otherMessage{background:#ffcda3;border:solid1pxgray;margin:0px5px5px0px;float:right;padding:0px6px0px6px;border-radius:10px10px010px;}.myMessage{background:#1bffbb;border:solid1pxgray;margin:0px5px5px5px;float:left;padding:0px6px0px6px;border-radius:10px10px10px0;}.jumbotron{margin-top:-40px;height:180px;}.footer{margin-top:10px;}</style></head><body><divclass="jumbotron text-center"style="margin-bottom:0"><h1>Lucky Numbers Mini-Games</h1><p><ahref="https://sbcode.net/tssock"target="_blank">https://sbcode.net/tssock</a></p></div><navclass="navbar navbar-expand-sm bg-dark navbar-dark"><aclass="navbar-brand"href="#">Games</a><buttonclass="navbar-toggler"type="button"data-toggle="collapse"data-target="#collapsibleNavbar"><spanclass="navbar-toggler-icon"></span></button><divclass="collapse navbar-collapse"id="collapsibleNavbar"><ulclass="navbar-nav"><liclass="nav-item"><aclass="nav-link"href="#"onclick="client.showGame(0)">🥉Bronze Game</a></li><liclass="nav-item"><aclass="nav-link"href="#"onclick="client.showGame(1)">🥈Silver Game</a></li><liclass="nav-item"><aclass="nav-link"href="#"onclick="client.showGame(2)">🥇Gold Game</a></li></ul></div></nav><divclass="container"style="margin-top:30px"><divclass="row"><divclass="col-sm-8"><divclass="gamePanel"id="gamePanel0"><h2id="gameTitle">🥉Bronze Game</h2></div><divclass="gamePanel"id="gamePanel1"><h2id="gameTitle">🥈Silver Game</h2></div><divclass="gamePanel"id="gamePanel2"><h2id="gameTitle">🥇Gold Game</h2></div></div><divclass="col-sm-4"><divclass="chatPanel"><olid="messages"class="messages"></ol><divclass="chatMessageInputDiv"><divclass="input-group"><inputclass="form-control width100"id="messageText"placeholder="Enter Chat Message"onkeyup=""/><spanclass="input-group-btn"><buttonclass="btn btn-info"onclick="client.sendMessage()"> Send
</button></span></div></div></div></div></div></div><divclass="footer text-center"style="margin-bottom:0">
This is an example game from the TypeScript SocketIO course at
<ahref="https://sbcode.net/tssock"target="_blank">https://sbcode.net/tssock</a></div><scriptsrc="jquery/jquery.min.js"></script><scriptsrc="bootstrap/js/bootstrap.bundle.min.js"></script><scriptsrc="socket.io/socket.io.js"></script><scriptsrc="client.js"></script></body></html>