A goroutine-style WebSocket server based on github.com/gorilla/websocket
, supports: Listener, Heart, Group...
go install github.com/go-the-way/wsserver@latest
curl $SERVER_ADDR/api/online_client
ServicePath: Sender
ServiceMethod: Send
Args: {"type":"echo","client_id":["client_a"],"data":{"seq":1000}}
Reply: {"code":200}
ServicePath: Sender
ServiceMethod: GSend
Args: {"type":"echo","group":["x-node"],"data":{"seq":1000}}
Reply: {"code":200}
ServicePath: Client
ServiceMethod: JoinGroup
Args: {"client_id":"x-client","group":"x-node"}
Reply: {"code":200}
ServicePath: Client
ServiceMethod: LeaveGroup
Args: {"client_id":"x-client","group":"x-node"}
Reply: {"code":200}
ServicePath: Client
ServiceMethod: LeaveAllGroup
Args: {"client_id":"x-client"}
Reply: {"code":200}
ServicePath: Client
ServiceMethod: Broadcast
Args: {"type":"echo","data":{"seq":1000}}
Reply: {"code":200}
-
Creator
when a new client connected, trigger creator listener
-
Destroyer
when cached client closed, trigger destroyer listener
config -- App & Environment
handler -- Handler routers
listener -- Listeners
manager -- Client manager
pkg -- Third-party pkg
rpc -- Rpc service
Http Server Address
default val: :80
Rpc Server Address
default val: :86
let ws = new WebSocket("ws://192.168.6.125:80/ws");
let seq = 1;
let INT;
ws.onopen = function () {
console.log("已连接");
INT = setInterval(function () {
ws.send('{"type":"seq","data":{"seq":' + seq++ + "}}");
}, 1000);
};
ws.onmessage = function (msg) {
console.log("接收=>", msg.data);
};
ws.onclose = function () {
console.log("已断开");
clearInterval(INT);
};