I tried the handin-server on a Windows computer and it worked just
fine. Now I'm trying it on a headless UNIX system and, upon first run,
I got:
$ racket -l handin-server
Unable to init server: Could not connect: Connection refused
Gtk initialization failed for display ":0"
context...:
"/usr/share/racket/pkgs/gui-lib/mred/private/wx/gtk/queue.rkt": [running body]
temp37_0
for-loop
run-module-instance!125
for-loop
[repeats 1 more time]
run-module-instance!125
for-loop
[repeats 1 more time]
run-module-instance!125
do-dynamic-require5
"/usr/share/racket/pkgs/gui-lib/mred/private/wx/platform.rkt": [running body]
temp37_0
for-loop
run-module-instance!125
for-loop
...
Then taking a peek at
~/.racket/7.2/pkgs/handin/handin-server/main.rkt
I saw
(require ...
;; workaround for a confusing problem: without this, the gui
;; gets initialized in a handler (since checks use it, and
;; they're being required dynamically), and further handlers
;; will fail with "queue-callback: eventspace is shutdown",
;; requiring it here makes it avoids killing the eventspace
racket/gui/base)
Just to see what happens, I commented out the racket/gui/base
requirement and the server ran, but the comment says there'll be a
confusing problem.
$ racket -l handin-server
[-|2019-08-17T01:52:22] *** embedded web server started
[-|2019-08-17T01:52:22] Cleaning up all submission directories
[-|2019-08-17T01:52:22] *** handin server started on port 7979
Why does the server need anything GUI-related? How do you run this
server in production?