lxzan / gws

simple, fast, reliable websocket server & client, supports running over tcp/kcp/unix domain socket. keywords: ws, proxy, chat, go, golang...
https://pkg.go.dev/github.com/lxzan/gws
Apache License 2.0
1.36k stars 87 forks source link

gws.Conn 能否返回唯一的id #34

Closed joestarzxh closed 1 year ago

joestarzxh commented 1 year ago

这样方便与业务整合

lxzan commented 1 year ago

没必要吧,一般是用userId,也可以从net.Conn拿到fd当唯一id,或者onopen里面原子操作生成自增id

joestarzxh commented 1 year ago

嗯,好的,其实需要fd,windows下面不知道怎么样获取,刚刚看了一下gnet代码,谢谢

lxzan commented 1 year ago

注意判断TLS

func socketFD(conn net.Conn) int {
    tcpConn := reflect.Indirect(reflect.ValueOf(conn)).FieldByName("conn")
    fdVal := tcpConn.FieldByName("fd")
    pfdVal := reflect.Indirect(fdVal).FieldByName("pfd")
    return int(pfdVal.FieldByName("Sysfd").Int())
}
joestarzxh commented 1 year ago

好的