推荐答案
在 Koa 中使用 WebSocket 可以通过 koa-websocket 中间件来实现。以下是一个简单的示例:
// www.javascriptcn.com code example
const Koa = require('koa');
const websockify = require('koa-websocket');
const app = websockify(new Koa());
// WebSocket 连接处理
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 closed');
});
await next();
});
// HTTP 请求处理
app.use(async (ctx) => {
ctx.body = 'Hello World';
});
app.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});本题详细解读
1. 安装依赖
首先,你需要安装 koa 和 koa-websocket 这两个依赖:
npm install koa koa-websocket
2. 创建 Koa 应用并启用 WebSocket
使用 koa-websocket 中间件将 Koa 应用转换为支持 WebSocket 的应用:
const Koa = require('koa');
const websockify = require('koa-websocket');
const app = websockify(new Koa());3. 处理 WebSocket 连接
通过 app.ws.use 方法来处理 WebSocket 连接。在这个方法中,你可以监听 message 事件来处理客户端发送的消息,并通过 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 closed');
});
await next();
});4. 处理 HTTP 请求
你仍然可以使用 app.use 来处理普通的 HTTP 请求:
app.use(async (ctx) => {
ctx.body = 'Hello World';
});5. 启动服务器
最后,启动服务器并监听端口:
app.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});通过以上步骤,你就可以在 Koa 中使用 WebSocket 了。