package websocket_test import ( "context" "net/http" "os" "testing" "time" "nhooyr.io/websocket" "nhooyr.io/websocket/internal/test/assert" "nhooyr.io/websocket/internal/test/wstest" ) func TestWasm(t *testing.T) { t.Parallel() ctx, cancel := context.WithTimeout(context.Background(), time.Minute) defer cancel() c, resp, err := websocket.Dial(ctx, os.Getenv("WS_ECHO_SERVER_URL"), &websocket.DialOptions{ Subprotocols: []string{"echo"}, }) assert.Success(t, err) defer c.Close(websocket.StatusInternalError, "") assert.Equal(t, "subprotocol", "echo", c.Subprotocol()) assert.Equal(t, "response code", http.StatusSwitchingProtocols, resp.StatusCode) c.SetReadLimit(65536) for i := 0; i < 10; i++ { err = wstest.Echo(ctx, c, 65536) assert.Success(t, err) } err = c.Close(websocket.StatusNormalClosure, "") assert.Success(t, err) } func TestWasmDialTimeout(t *testing.T) { t.Parallel() ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond) defer cancel() beforeDial := time.Now() _, _, err := websocket.Dial(ctx, "ws://example.com:9893", &websocket.DialOptions{ Subprotocols: []string{"echo"}, }) assert.Error(t, err) if time.Since(beforeDial) >= time.Second { t.Fatal("wasm context dial timeout is not working", time.Since(beforeDial)) } }