2024-05-09 20:51:25 +08:00
|
|
|
import { serve } from '@hono/node-server'
|
|
|
|
import type { ServerType } from '@hono/node-server/dist/types'
|
|
|
|
import { Hono } from 'hono'
|
|
|
|
import { WebSocket } from 'ws'
|
|
|
|
import { createNodeWebSocket } from '.'
|
|
|
|
|
|
|
|
describe('WebSocket helper', () => {
|
|
|
|
const app = new Hono()
|
|
|
|
const { injectWebSocket, upgradeWebSocket } = createNodeWebSocket({ app })
|
|
|
|
|
|
|
|
const mainPromise = new Promise((resolve) =>
|
|
|
|
app.get(
|
|
|
|
'/',
|
|
|
|
upgradeWebSocket(() => ({
|
|
|
|
onOpen() {
|
|
|
|
resolve(true)
|
|
|
|
},
|
|
|
|
}))
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
it('Should be able to connect', async () => {
|
|
|
|
const server = await new Promise<ServerType>((resolve) => {
|
|
|
|
const server = serve(
|
|
|
|
{
|
|
|
|
fetch: app.fetch,
|
|
|
|
port: 3030,
|
|
|
|
},
|
|
|
|
() => {
|
|
|
|
resolve(server)
|
|
|
|
}
|
|
|
|
)
|
|
|
|
})
|
|
|
|
injectWebSocket(server)
|
2024-05-26 10:36:11 +08:00
|
|
|
new WebSocket('ws://localhost:3030/')
|
2024-05-09 20:51:25 +08:00
|
|
|
|
|
|
|
expect(await mainPromise).toBe(true)
|
|
|
|
})
|
|
|
|
})
|