This sends a 'welcome' event with a message to the connected user.
Node.js
socket.emit('welcome', 'Hello user!');
Sample Program
This is a simple chat server using Socket.io. When a user connects, it welcomes them. When a user sends a message, it broadcasts to all users.
Node.js
import { createServer } from'http';
import { Server } from'socket.io';
const httpServer = createServer();
const io = new Server(httpServer, { cors: { origin: '*' } });
io.on('connection', (socket) => {
console.log('User connected:', socket.id);
socket.on('chat message', (msg) => {
console.log('Received message:', msg);
io.emit('chat message', msg); // send to all clients
});
socket.emit('welcome', 'Welcome to Socket.io chat!');
});
httpServer.listen(3000, () => {
console.log('Server listening on port 3000');
});
OutputSuccess
Important Notes
Socket.io works with WebSocket but falls back to other methods if needed.
Remember to handle CORS if your client and server run on different origins.
Use io.emit to send messages to all connected users.
Summary
Socket.io makes real-time communication between browser and server simple.
It listens for connections and events, then sends messages instantly.
Great for chat apps, live updates, and multiplayer games.
Practice
(1/5)
1. What is the main purpose of Socket.io in Node.js applications?
easy
A. To manage database connections
B. To serve static files like HTML and CSS
C. To enable real-time, two-way communication between client and server
D. To compile JavaScript code on the server
Solution
Step 1: Understand Socket.io's role
Socket.io is designed to create real-time communication channels between clients and servers.
Step 2: Compare options with Socket.io's purpose
Serving static files, managing databases, or compiling code are not Socket.io's functions.
Final Answer:
To enable real-time, two-way communication between client and server -> Option C
Quick Check:
Socket.io = real-time communication [OK]
Hint: Remember: Socket.io is for instant client-server messaging [OK]
Common Mistakes:
Confusing Socket.io with static file servers
Thinking Socket.io manages databases
Assuming Socket.io compiles code
2. Which of the following is the correct way to import and initialize Socket.io on a Node.js server?
easy
A. const io = require('socket.io')(httpServer);
B. import io from 'socket.io'; io.listen(httpServer);
C. const io = new SocketIO(); io.attach(httpServer);
D. const io = socketio.createServer(httpServer);
Solution
Step 1: Recall Socket.io import syntax in Node.js
The common pattern uses require and immediately calls it with the HTTP server instance.
Step 2: Check each option's syntax
const io = require('socket.io')(httpServer); matches the standard usage: const io = require('socket.io')(httpServer);. Others use incorrect methods or syntax.
Final Answer:
const io = require('socket.io')(httpServer); -> Option A
Quick Check:
Standard import = require('socket.io')(server) [OK]
Hint: Socket.io import uses require and calls it with server [OK]
Common Mistakes:
Using import without proper initialization
Trying to create Socket.io with new keyword
Using non-existent methods like createServer
3. Given this Socket.io server code snippet, what will be logged when a client connects?
A. The event name should be 'connection', not 'connect'
B. Missing parentheses after require
C. Socket.io cannot listen on port 3000 directly
D. Callback function should have two parameters
Solution
Step 1: Check the event name for client connections
Socket.io uses 'connection' event, not 'connect', to detect new clients.
Step 2: Verify other code parts
Require syntax and callback parameters are correct; listening on port 3000 is valid.
Final Answer:
The event name should be 'connection', not 'connect' -> Option A
Quick Check:
Use 'connection' event for client connect [OK]
Hint: Remember: 'connection' event, not 'connect' [OK]
Common Mistakes:
Using 'connect' instead of 'connection'
Thinking require needs extra parentheses
Assuming two parameters needed in callback
5. You want to broadcast a message to all connected clients except the sender using Socket.io. Which code snippet correctly does this inside a connection handler?
To send to all except sender, use socket.broadcast.emit.
Step 2: Evaluate each option
socket.broadcast.emit('chat message', msg); uses correct syntax. io.emit('chat message', msg); sends to all including sender. socket.emit('chat message', msg); sends only to sender. io.broadcast.emit('chat message', msg); is invalid syntax.
Final Answer:
socket.broadcast.emit('chat message', msg); -> Option B