Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

net.Conn is the wrong API for WebSockets #29

Closed
nhooyr opened this issue Sep 20, 2019 · 4 comments
Closed

net.Conn is the wrong API for WebSockets #29

nhooyr opened this issue Sep 20, 2019 · 4 comments

Comments

@nhooyr
Copy link
Contributor

nhooyr commented Sep 20, 2019

golang.org/x/net/websockets has a similar API that is considered problematic.

See golang/go#18152 (comment)

the deeper problem with x/net/websocket is that it has the wrong API. It puts an io.Reader/Writer interface on top of what is fundamentally a message-based protocol.

@nhooyr
Copy link
Contributor Author

nhooyr commented Sep 20, 2019

Not sure what can be done about it now other than making a v2.

@theclapp
Copy link

If someone wants to use a message-based API, there's always gopherjs/websocket/websocketjs.

Having a net.Conn (probably) makes it easier for GopherJS users to write isomorphic Go (code that's the same for the browser and the server). And that aside, having an official net.Conn implementation means that people that want one don't have to write their own on top of gopherjs/websocket/websocketjs, it's just there.

@nhooyr
Copy link
Contributor Author

nhooyr commented Sep 22, 2019

If someone wants to use a message-based API, there's always gopherjs/websocket/websocketjs.

Yes but it is callback based which makes it frustrating to use.

Having a net.Conn (probably) makes it easier for GopherJS users to write isomorphic Go (code that's the same for the browser and the server). And that aside, having an official net.Conn implementation means that people that want one don't have to write their own on top of gopherjs/websocket/websocketjs, it's just there.

I agree isomorphic code is nice so I modified my WebSocket library to support WASM.

See coder/websocket#142

Once Go 1.13 is supported by GopherJS, I think it's best to recommend my library instead which provides a nicer API for when you don't need a net.Conn but also provides a net.Conn wrapper, all with the exact same API for targeting WASM or any other "normal" Go target.

@nhooyr
Copy link
Contributor Author

nhooyr commented Nov 22, 2019

Going to close as it has been a while and I'm not sure if this is relevant anymore.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants