npm init -y
This command initializes a new Node.js project, creating a package.json
file with default settings.
npx tsc --init
This command initializes TypeScript in the project, creating a tsconfig.json
file.
Update the tsconfig.json
file with:
"rootDir": "./src",
"outDir": "./dist",
These settings specify the root directory for TypeScript source files and the output directory for compiled JavaScript files.
npm i ws @types/ws
This command installs the ws
library for WebSocket functionality and its TypeScript type definitions.
import WebSocket, { WebSocketServer } from 'ws';
import http from 'http';
const server = http.createServer(function(request: any, response: any) {
console.log((new Date()) + ' Received request for ' + request.url);
response.end("hi there");
});
const wss = new WebSocketServer({ server });
wss.on('connection', function connection(ws) {
ws.on('error', console.error);
ws.on('message', function message(data, isBinary) {
wss.clients.forEach(function each(client) {
if (client.readyState === WebSocket.OPEN) {
client.send(data, { binary: isBinary });
}
});
});
ws.send('Hello! Message From Server!!');
});
server.listen(8080, function() {
console.log((new Date()) + ' Server is listening on port 8080');
});
import express from 'express'
import { WebSocketServer } from 'ws'
const app = express()
const httpServer = app.listen(8080)
const wss = new WebSocketServer({ server: httpServer });
wss.on('connection', function connection(ws) {
ws.on('error', console.error);
ws.on('message', function message(data, isBinary) {
wss.clients.forEach(function each(client) {
if (client.readyState === WebSocket.OPEN) {
client.send(data, { binary: isBinary });
}
});
});
ws.send('Hello! Message From Server!!');
});
import { useEffect, useState } from 'react'
import './App.css'
function App() {
const [socket, setSocket] = useState<WebSocket | null>(null);
useEffect(() => {
const newSocket = new WebSocket('ws://localhost:8080');
newSocket.onopen = () => {
console.log('Connection established');
newSocket.send('Hello Server!');
}
newSocket.onmessage = (message) => {
console.log('Message received:', message.data);
}
setSocket(newSocket);
return () => newSocket.close();
}, [])
return (
<>
hi there
</>
)
}
export default App