gopherjs / websocket

websocket provides high- and low-level bindings for the browser's WebSocket API.
BSD 3-Clause "New" or "Revised" License
111 stars 25 forks source link

Add WebAssembly support (GOARCH=wasm). #25

Open silbinarywolf opened 6 years ago

silbinarywolf commented 6 years ago

This package should be updated to use the following library so that websocket usage can target wasm and gopherjs: "github.com/gopherjs/gopherwasm/js"

This will require wrapping callbacks with js.NewEventCallback() (and calling .Release()) and changing *js.Object to js.Value

silbinarywolf commented 6 years ago

I have something functional but not elegant available for those interested here: https://github.com/gopherjs/websocket/pull/26

I'm not really interested in covering this off properly as I will most likely move away from Websocket in the future.

dmitshur commented 6 years ago

Thanks for opening the issue, and for sending a draft PR!

I tested it with one of my projects that uses WebSockets just now, and I can see that it compiles and functions partially, but after some amount of bytes (or messages), there is a discrepancy in the data sent/received, causing my protocol to report an error.

Still, it's helpful to have it as a reference, so thanks for providing it!

nhooyr commented 5 years ago

@dmitshur Instead of adding support for WASM to this package, what are your thoughts on recommending my WebSocket package instead? The client side can target WASM directly with nearly the same API as for non WASM targets

See https://github.com/nhooyr/websocket/pull/142

It should also work for GopherJS once GopherJS supports Go 1.13.

This would also resolve #29 and every other issue/PR on this library.