service/tests/start_ws.js
Star 715de5e442 使用 gojs/task 代替内置任务
支持 load 加载的服务热更新(需配置hotLoad)
增强唯一id获取(使用新算法,依赖Redis)
session支持基于细粒度权限匹配(传入支持的功能列表匹配)
2025-07-24 21:44:41 +08:00

67 lines
1.4 KiB
JavaScript

import s from "apigo.cc/gojs/service"
import http from "apigo.cc/gojs/http"
import rt from "apigo.cc/gojs/runtime"
import co from "apigo.cc/gojs/console"
import task from "apigo.cc/gojs/task"
let hc = http
let urlPrefix
function main() {
s.load('api/ws.js')
// s.task('task.js', 100)
task.addTask("@every 1s", 'task.js')
task.start()
let host = s.start()
hc = http.new({ baseURL: 'http://' + host })
return host
}
function testWS() {
let ws = hc.connect('/ws', { pingInterval: 10 })
let r = ws.read()
if (r.data !== 'Hello, World!') {
ws.close()
return r
}
co.info('test ws hello ok')
ws.write('abc')
r = ws.read()
if (r.data !== 'abc') {
ws.close()
return r
}
co.info('test ws abc ok')
// ws.ping()
rt.sleep(10)
let pc = ws.pingCount()
co.info('test ws ping ok', pc.pingTimes, pc.pongTimes)
ws.write(new Uint8Array([1, 2, 3]))
r = ws.read()
if (r.data[0] !== 1 || r.data[1] !== 2 || r.data[2] !== 3) {
ws.close()
return r
}
co.info('test ws bytes ok')
ws.write({ name: 'Tom' })
r = ws.read()
if (r.data.name !== 'Tom') {
ws.close()
return r
}
co.info('test ws json ok')
rt.sleep(2000)
for (let i = 0; i < 5; i++) {
let j = ws.read()
if (i !== j.data) {
return j
}
}
ws.close()
return true
}