Advanced

WebSocket 端点

编辑此页面

通过在启动配置中指定 ws 处理程序文件可以实现 WebSocket 端点。请注意,此功能在Nitro 服务器上是实验性的,其配置可能在未来的SolidStart 版本中发生变化。请谨慎使用。

./app.config.ts
import { defineConfig } from "@solidjs/start/config";
export default defineConfig({
server: {
experimental: {
websocket: true,
},
},
}).addRouter({
name: "ws",
type: "http",
handler: "./src/ws.ts",
target: "server",
base: "/ws",
});

在 ws 文件中,你可以导出一个 eventHandler 函数来管理 WebSocket 的连接和事件:

./src/ws.ts
import { eventHandler } from "vinxi/http";
export default eventHandler({
handler() {},
websocket: {
async open(peer) {
console.log("open", peer.id, peer.url);
},
async message(peer, msg) {
const message = msg.text();
console.log("msg", peer.id, peer.url, message);
},
async close(peer, details) {
console.log("close", peer.id, peer.url);
},
async error(peer, error) {
console.log("error", peer.id, peer.url, error);
},
},
});
报告此页面问题