You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bun环境下整合Elysia与socket.io构建聊天应用后端?

Bun + Elysia + Socket.IO 协同实现聊天后端解决方案

核心实现(Elysia版本)

首先安装依赖:

bun add elysia socket.io

完整代码示例:

import { Elysia } from "elysia";
import { Server } from "socket.io";

// 初始化Elysia并定义REST路由
const app = new Elysia()
  .get("/api/health", () => ({ status: "ok" }))
  .get("/api/messages", () => ["历史消息示例"])
  // 可添加更多POST/PUT等REST接口
  .listen(3000);

// 基于Elysia关联的Bun原生HTTP Server初始化Socket.IO
const io = new Server(app.server, {
  cors: {
    origin: "http://localhost:5173", // 替换为你的前端地址
    methods: ["GET", "POST"]
  }
});

// 实现Socket.IO聊天核心逻辑
io.on("connection", (socket) => {
  console.log("用户已连接");
  
  // 接收客户端发送的聊天消息并广播给所有用户
  socket.on("chat message", (msg) => {
    io.emit("chat message", msg);
  });
  
  socket.on("disconnect", () => {
    console.log("用户已断开连接");
  });
});

console.log(`服务运行在 http://localhost:${app.server?.port}`);

关键说明

Elysia调用listen后返回的实例中,app.server就是Bun的原生HTTP Server实例,直接传给Socket.IO构造函数即可实现同端口共享。Socket.IO只会处理自身的路径(默认/socket.io),其余HTTP请求会自动交给Elysia处理,不会出现互相拦截的问题。


备选方案(Hono版本)

如果考虑切换到Hono,实现逻辑类似:

安装依赖:

bun add hono socket.io

完整代码示例:

import { Hono } from "hono";
import { Server } from "socket.io";
import { createBunServer } from "hono/bun";

// 初始化Hono并定义REST路由
const app = new Hono();
app.get("/api/health", (c) => c.json({ status: "ok" }));
app.get("/api/messages", (c) => c.json(["历史消息示例"]));

// 创建Bun原生HTTP Server
const server = createBunServer(app);

// 初始化Socket.IO
const io = new Server(server, {
  cors: {
    origin: "http://localhost:5173", // 替换为你的前端地址
    methods: ["GET", "POST"]
  }
});

// 聊天逻辑与Elysia版本一致
io.on("connection", (socket) => {
  console.log("用户已连接");
  
  socket.on("chat message", (msg) => {
    io.emit("chat message", msg);
  });
  
  socket.on("disconnect", () => {
    console.log("用户已断开连接");
  });
});

server.listen({ port: 3000 }, () => {
  console.log("服务运行在 http://localhost:3000");
});

内容的提问来源于stack exchange,提问作者MrDaves

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 16:05:08