main.lpr 943 B

1234567891011121314151617181920212223242526272829303132
  1. program main;
  2. {$mode objfpc}
  3. {$modeswitch externalclass}
  4. uses
  5. BrowserConsole, JS, Classes, SysUtils, Web, Rtl.WorkerCommands, hello;
  6. var
  7. Worker1 : TJSWorker;
  8. Worker2 : TJSWorker;
  9. Cmd : TJSHelloCommand;
  10. begin
  11. Worker1:=TJSWorker.new('worker.js?name=worker1');
  12. CommandDispatcher.RegisterWorker(Worker1,'Worker 1');
  13. Worker2:=TJSWorker.new('worker.js?name=worker2');
  14. CommandDispatcher.RegisterWorker(Worker2,'Worker 2');
  15. CommandDispatcher.RegisterCommandHandler('hello',procedure (cmd : TCustomWorkerCommand)
  16. var
  17. lCmd : TJSHelloCommand absolute cmd;
  18. begin
  19. Writeln('Received hello: ',lCmd.Msg);
  20. end);
  21. Cmd:=TJSHelloCommand.Create('Hello, workers!');
  22. CommandDispatcher.BroadcastCommand(Cmd);
  23. Cmd:=TJSHelloCommand.Create('Hello, worker 1!');
  24. CommandDispatcher.SendCommand('Worker 1',Cmd);
  25. Cmd:=TJSHelloCommand.Create('Hello again, worker 1!');
  26. CommandDispatcher.SendCommand(Worker1,Cmd);
  27. end.