lipfangmoe/weebsocket
WebSocket Client library written in Zig. (This is a mirror, main repository linked below)
Zig Websocket Client (maybe Server one day). Does not implement any WebSocket extensions at the moment.
std.httpTo add this to your project, use the Zig Package Manager:
zig fetch --save 'https://github.com/deanveloper/weebsocket/archive/refs/tags/v0.1.1.tar.gz'
const std = @import("std");
const ws = @import("weebsocket");
pub fn main() !void {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
defer gpa.deinit();
var client = ws.Client.init(gpa.allocator());
defer client.deinit();
const uri = std.Uri.parse("wss://example.com/") catch unreachable;
var connection = try client.handshake(uri, null);
defer connection.deinit(null);
while (connection.readMessage()) |message| {
const payload_reader = message.payloadReader();
const payload = try payload_reader.readAllAlloc(gpa.allocator(), 10_000_000);
defer gpa.allocator().free(payload);
if (std.mem.eql(u8, payload.constSlice(), "foobar")) {
try connection.writeMessageString("got your message!");
const Data = struct { int: u32, string: []const u8 };
var payload_writer = try connection.writeMessageStreamUnknownLength(.text);
var buffered_writer = std.io.bufferedWriter(payload_writer.writer());
try std.json.stringify(buffered_writer.writer(), Data{ .int = 5, .string = "some value" }, .{});
try buffered_writer.flush();
}
} else |err| {
return err;
}
}
std.http library