其他内容:NodeJS 中的 Socket.io
Socket.IO 是一个基于事件的实时通信引擎,用于在浏览器和服务器之间实现高效的双向通信。它支持不同的通信传输方式,例如 WebSocket、AJAX 轮询等,自动根据浏览器支持情况选择最优的通信方式。
以下是一个使用 NodeJS 和 Socket.IO 创建简单聊天室应用的例子:
服务器端代码 (server.js
):
const http = require('http');
const socketIO = require('socket.io');
const server = http.createServer((req, res) => {
res.end('Chat server is running.');
});
const io = socketIO(server);
io.on('connection', (socket) => {
console.log('A user has connected.');
socket.on('disconnect', () => {
console.log('A user has disconnected.');
});
socket.on('chat message', (msg) => {
console.log('Message: ' + msg);
// Broadcast the message to all connected sockets
io.emit('chat message', msg);
});
});
server.listen(3000, () => {
console.log('Server is running on port 3000');
});
客户端代码 (index.html
):
<!DOCTYPE html>
<html>
<head>
<title>Chat Room</title>
</head>
<body>
<h1>Chat Room</h1>
<div id="messages"></div>
<input id="m" type="text" />
<button onclick="sendMessage()">Send</button>
<script src="/socket.io/socket.io.js"></script>
<script>
const socket = io();
const messages = document.getElementById('messages');
const input = document.getElementById('m');
socket.on('chat message', (msg) => {
messages.innerHTML += '<p>' + msg + '</p>';
});
function sendMessage() {
const msg = input.value;
socket.emit('chat message', msg);
input.value = '';
}
</script>
</body>
</html>
在服务器端,我们创建了一个 HTTP 服务器并初始化了 Socket.IO。当客户端连接时,我们监听 'connection' 事件,并在收到 'chat message' 事件时,将消息广播给所有连接的客户端。
在客户端,我们连接到服务器并监听 'chat message' 事件以接收消息。当用户输入消息并点击按钮时,我们发送 'chat message' 事件,服务器端会处理并广播这条消息。
评论已关闭