The article directories
🔥 1. Preface
🔥 2. Project structure analysis
🔥 3. Procedure
🔥 4. View the effect
🔥 5. Recommend good articles in the past
🔥 1. Preface
Hello, I’m paper airplane. If every day is endless knowledge, then such learning must be very boring. Today I will bring you a sense of achievement: Node.js+ WS module to create a simple chat room! There’s a code address at the end.
rendering
After seeing the effect, are you curious about the implementation method? Next, I will explain to you one by one:
🔥 2. Project structure analysis
Project catalog disassembly:
- Client folder: client configuration
- Server.js: static server for the client
- Websocketserver. js: server configuration file
We have the overall structure, and then, hey, hey.
🔥 3. Procedure
Preparation:
Package. json is obtained by executing the following command:
npm init -y
Copy the code
Two dependency packages are required:
npm install ws --save-dev
npm install express --save-dev
Copy the code
Step 1: Server build (webSocketServer.js)
const webSocket = require("ws"); Const ws = new websocket. Server({port: 8000}); // create server with port 8000 let clients = {}; let clientNum = 0; Ws. on("connection", (client) => {// Connect to the client // assign the number of the client, that is, the user to participate in the chat client.name = ++clientNum; clients[client.name] = client; On ("message", (MSG) => {console.log(" user "+ client.name +" say :" + MSG); // Broadcast data output broadcast(client, MSG); }); Client. On ("error", (err) => {if (err) {console.log(err); }}); On ("close", () => {delete clients[client.name]; Console. log(" user "+ client.name +" offline ~~"); }); }); Function broadcast(client, MSG) {for (var key in clients) {clients[key]. Send (" client "+ client. }}Copy the code
Step 2: Client-side static server build (server.js)
const express = require("express"); // Const path = require("path"); Const app = express(); const port = 3000; // port const host = "127.0.0.1"; Use (express. Static (path.resolve(__dirname, "./client"))); / / set to the path of the open service app. Listen (port, host, () = > {/ / monitor service console. The log (` client server: http://${host} : ${port} `); });Copy the code
Step 3: Client page building (index.html)
<! DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, <meta HTTP-equiv =" x-UA-compatible "content=" IE =edge"> <title> client </title> </head> <body> <div id="content" name="name" style="overflow-y: scroll; width: 400px; height: 300px; border: solid 1px #000"></div> <br /> <div> <input type="text" id="msg" style="width: 200px;" </div> <button id="submit" </button> <script SRC =" wsclient.js "charset=" utF-8 "></script> <script> document.querySelector('#submit').addEventListener('click', function () { var msg2 = msg.value ws.send(msg2) msg.value = '' }, false) </script> </body> </html>Copy the code
Step 4: Client connect to server configuration (wsclient.js)
Const ws = new WebSocket("ws://127.0.0.1:8000"); / / to connect to the client / / online ws onopen () = = > {ws. Send (" I'm online "); }; Ws.onmessage = (MSG) => {const content = document.getelementById ("content"); content.innerHTML += msg.data + "<br>"; }; // Ws. onError = (err) => {console.log(err); }; Onclose = () => {console.log("close"); };Copy the code
We’re done here.
Step 5: Start webSocketserver. js and server.js respectively
node WebSocketServer.js
Copy the code
node server.js
Copy the code
The above represents successful startup. Next we have a local test. If you want to play online, you can upload it yourself.
🔥 4. View the effect
Open localhost:3000 in two browsers to see the effect:
Download code: codechina.csdn.net/qq_32442973…
Q: What if websocket is disconnected? (More on that later)
🔥 5. Recommend good articles in the past
- How does NPM install come from the package? No wonder NPMJS has such a library! How to make your own NPM component library!
- How wechat WeixinJSBridge. Invoke successful payment unexpectedly does not jump? And shut down my page! What should I do?
- Talk about macro task and micro task in JS!
- 2021 front-end interview JS topic summary, might as well have a look at the question belongs to you
- The latest edition of Front-end Asynchronous Solutions (2021)_ Paper Plane Blog
- Use Docker deployment front-end project combat tutorial, the pit I help you step on! _ Paper Plane Blog -CSDN blog