diff --git a/src/browser/js/Local.zig b/src/browser/js/Local.zig
index 55baa597c..f77a0fb5c 100644
--- a/src/browser/js/Local.zig
+++ b/src/browser/js/Local.zig
@@ -623,7 +623,8 @@ pub fn jsValueToZig(self: *const Local, comptime T: type, js_val: js.Value) !T {
return try self.jsValueToZig(o.child, js_val);
},
.float => |f| switch (f.bits) {
- 0...32 => return js_val.toF32(),
+ 0...16 => return js_val.toF16(),
+ 17...32 => return js_val.toF32(),
33...64 => return js_val.toF64(),
else => {},
},
diff --git a/src/browser/js/Value.zig b/src/browser/js/Value.zig
index 95dc641dc..c6089a277 100644
--- a/src/browser/js/Value.zig
+++ b/src/browser/js/Value.zig
@@ -234,6 +234,10 @@ pub fn typeOf(self: Value) js.String {
return js.String{ .local = self.local, .handle = str_handle };
}
+pub fn toF16(self: Value) !f16 {
+ return @floatCast(try self.toF64());
+}
+
pub fn toF32(self: Value) !f32 {
return @floatCast(try self.toF64());
}
diff --git a/src/browser/tests/net/websocket.html b/src/browser/tests/net/websocket.html
index 6c326a502..052c928ac 100644
--- a/src/browser/tests/net/websocket.html
+++ b/src/browser/tests/net/websocket.html
@@ -562,6 +562,60 @@
}
+
+
+
+