@@ -24,7 +24,6 @@ const websocket = @import("websocket");
2424
2525const Browser = @import ("browser/browser.zig" ).Browser ;
2626const server = @import ("server.zig" );
27- const handler = @import ("handler.zig" );
2827const MaxSize = @import ("msg.zig" ).MaxSize ;
2928
3029const parser = @import ("netsurf" );
@@ -86,11 +85,9 @@ const CliMode = union(CliModeTag) {
8685 const Server = struct {
8786 execname : []const u8 = undefined ,
8887 args : * std.process.ArgIterator = undefined ,
89- addr : std.net.Address = undefined ,
9088 host : []const u8 = Host ,
9189 port : u16 = Port ,
9290 timeout : u8 = Timeout ,
93- tcp : bool = false , // undocumented TCP mode
9491
9592 // default options
9693 const Host = "127.0.0.1" ;
@@ -160,10 +157,6 @@ const CliMode = union(CliModeTag) {
160157 return printUsageExit (execname , 1 );
161158 }
162159 }
163- if (std .mem .eql (u8 , "--tcp" , opt )) {
164- _server .tcp = true ;
165- continue ;
166- }
167160
168161 // unknown option
169162 if (std .mem .startsWith (u8 , opt , "--" )) {
@@ -186,10 +179,6 @@ const CliMode = union(CliModeTag) {
186179 if (default_mode == .server ) {
187180
188181 // server mode
189- _server .addr = std .net .Address .parseIp4 (_server .host , _server .port ) catch | err | {
190- log .err ("address (host:port) {any}\n " , .{err });
191- return printUsageExit (execname , 1 );
192- };
193182 _server .execname = execname ;
194183 _server .args = args ;
195184 return CliMode { .server = _server };
@@ -249,50 +238,19 @@ pub fn main() !void {
249238 .server = > | opts | {
250239
251240 // Stream server
252- const addr = blk : {
253- if (opts .tcp ) {
254- break :blk opts .addr ;
255- } else {
256- const unix_path = "/tmp/lightpanda" ;
257- std .fs .deleteFileAbsolute (unix_path ) catch {}; // file could not exists
258- break :blk try std .net .Address .initUnix (unix_path );
259- }
260- };
261- const socket = server .listen (addr ) catch | err | {
262- log .err ("Server listen error: {any}\n " , .{err });
263- return printUsageExit (opts .execname , 1 );
264- };
265- defer std .posix .close (socket );
266- log .debug ("Server opts: listening internally on {any}..." , .{addr });
267-
268- const timeout = std .time .ns_per_s * @as (u64 , opts .timeout );
269241
270242 // loop
271243 var loop = try jsruntime .Loop .init (alloc );
272244 defer loop .deinit ();
273245
274- // TCP server mode
275- if (opts .tcp ) {
276- return server .handle (alloc , & loop , socket , null , timeout );
277- }
278-
279- // start stream server in separate thread
280- var stream = handler.Stream {
281- .ws_host = opts .host ,
282- .ws_port = opts .port ,
283- .addr = addr ,
284- };
285- const cdp_thread = try std .Thread .spawn (
286- .{ .allocator = alloc },
287- server .handle ,
288- .{ alloc , & loop , socket , & stream , timeout },
289- );
246+ const vm = jsruntime .VM .init ();
247+ defer vm .deinit ();
290248
291249 // Websocket server
292- var ws = try websocket .Server (handler . Handler ).init (alloc , .{
250+ var ws = try websocket .Server (server . Client ).init (alloc , .{
293251 .port = opts .port ,
294252 .address = opts .host ,
295- .max_message_size = MaxSize + 14 , // overhead websocket
253+ .max_message_size = 256 * 1024 + 14 , // + 14 is the max websocket header len
296254 .max_conn = 1 ,
297255 .handshake = .{
298256 .timeout = 3 ,
@@ -304,8 +262,18 @@ pub fn main() !void {
304262 });
305263 defer ws .deinit ();
306264
307- try ws .listen (& stream );
308- cdp_thread .join ();
265+
266+ try ws .listen (.{
267+ .vm = vm ,
268+ .loop = & loop ,
269+ .allocator = alloc ,
270+ // The websocket.zig fork has a hard-coded hack for handling
271+ // puppeteer's request to /json/version. The hack relies on
272+ // having these 2 fields to generating a response. These should
273+ // be removed when the hack is removed.
274+ .ws_host = opts .host ,
275+ .ws_port = opts .port ,
276+ });
309277 },
310278
311279 .fetch = > | opts | {
0 commit comments