DEV Community

Cover image for Chat App with WebSocket: Boilerplate Code
Sokhavuth TIN
Sokhavuth TIN

Posted on

1

Chat App with WebSocket: Boilerplate Code


GitHub: https://github.com/Sokhavuth/chat
Heroku: https://khmerweb-chat.herokuapp.com/

WebSocket is an Internet protocol facilitating real-time data transfer between server and client. Once the connection between server and client is established, this connection stays open allowing the free flow of data between the two parties. As a result, WebSocket protocol is very useful to create application requiring continuous real-time data transfer such as chat application for example.

In Node.js, as usual, to start building an application, we need to create a package.json first by writing on Terminal window:

npm init
Enter fullscreen mode Exit fullscreen mode

In consequence, a package.json file is created and there are useful information inside:

// package.json

{
  "name": "chat-app",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}
Enter fullscreen mode Exit fullscreen mode

In Node.js, to build chat application using WebSocket protocol, we can use Socket.io package with Express.js web framework.

npm install express socket.io
Enter fullscreen mode Exit fullscreen mode

Next, we could create an index.js file as the entry point for our chat application.

// index.js
// npm install express
// npm install socket.io
// npm install nodemon

const express = require('express');
const app = express();
const http = require('http');
const server = http.createServer(app);


const port = process.env.PORT || 3000;

app.get('/', (req, res) => {
  res.send('<h4>Welcome to Khmer Web Chat App!</h4>');
});

server.listen(port, () => {
  console.log(`listening on *${port}`);
});
Enter fullscreen mode Exit fullscreen mode

To run our chat application, we can use nodemon package because it will help us to restart the program each time we change something in the code. Otherwise, we will manually relaunch the application each time we change the code.

npm install nodemon
Enter fullscreen mode Exit fullscreen mode

One more thing to do is to add a line of code in package.json to be able to use nodemon module correctly.

{
  "name": "chat-app",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "nodemon index.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.18.1",
    "nodemon": "^2.0.19",
    "socket.io": "^4.5.1"
  }
}
Enter fullscreen mode Exit fullscreen mode

Finally, to launch our chat application, we just write the instruction on Terminal window as below:

npm start
Enter fullscreen mode Exit fullscreen mode

SurveyJS custom survey software

JavaScript UI Libraries for Surveys and Forms

SurveyJS lets you build a JSON-based form management system that integrates with any backend, giving you full control over your data and no user limits. Includes support for custom question types, skip logic, integrated CCS editor, PDF export, real-time analytics & more.

Learn more

Top comments (0)

nextjs tutorial video

Youtube Tutorial Series 📺

So you built a Next.js app, but you need a clear view of the entire operation flow to be able to identify performance bottlenecks before you launch. But how do you get started? Get the essentials on tracing for Next.js from @nikolovlazar in this video series 👀

Watch the Youtube series

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay