推荐答案
// www.javascriptcn.com code example
const Koa = require('koa');
const websocket = require('koa-websocket');
const app = websocket(new Koa());
app.ws.use(async (ctx, next) => {
ctx.websocket.on('message', (message) => {
console.log('Received:', message);
ctx.websocket.send(`Echo: ${message}`);
});
ctx.websocket.on('close', () => {
console.log('WebSocket connection closed');
});
await next();
});
app.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});本题详细解读
1. 安装依赖
首先,你需要安装 koa 和 koa-websocket 这两个依赖包:
npm install koa koa-websocket
2. 创建 Koa 应用
使用 koa-websocket 中间件来创建一个支持 WebSocket 的 Koa 应用:
const Koa = require('koa');
const websocket = require('koa-websocket');
const app = websocket(new Koa());3. 处理 WebSocket 连接
通过 app.ws.use 方法来处理 WebSocket 连接。在这个方法中,你可以监听 message 事件来处理客户端发送的消息,并通过 ctx.websocket.send 方法向客户端发送消息。
// www.javascriptcn.com code example
app.ws.use(async (ctx, next) => {
ctx.websocket.on('message', (message) => {
console.log('Received:', message);
ctx.websocket.send(`Echo: ${message}`);
});
ctx.websocket.on('close', () => {
console.log('WebSocket connection closed');
});
await next();
});4. 启动服务器
最后,启动服务器并监听指定的端口:
app.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});5. 运行效果
当客户端连接到 WebSocket 服务器时,服务器会监听客户端发送的消息,并将消息原样返回给客户端。如果客户端断开连接,服务器会打印出连接关闭的日志。
6. 注意事项
koa-websocket中间件是基于ws库实现的,因此你需要确保ws库已经正确安装。- 在处理 WebSocket 连接时,确保正确处理异常和错误,以避免服务器崩溃。