lib 1014685 // websocket import org.java_websocket.client.WebSocketClient; import org.java_websocket.handshake.ServerHandshake; static void webSocketOnMessage_withIdler(S url, final VF1 onMessage, double idleInterval) { webSocketOnMessage_withIdler(url, onMessage, idleInterval, null); } static WebSocketClient webSocketOnMessage_withIdler(S url, final VF1 onMessage, final double idleInterval, fS initialMessage, fO... args) ctex { WebSocketClient client = new WebSocketClient(new URI(url)) { java.util.Timer idler; public void onMessage(S s) { if (!licensed()) ret with close(); // program exit s = dropTrailingNullChars(s); pcallF(onMessage, s); } public void onOpen(ServerHandshake handshake) { if (nempty(initialMessage)) send(format(initialMessage, args)); idler = doEvery(idleInterval, r { send("") }); } public void onClose(int code, S reason, bool remote) { cancelTimer(idler); idler = null; } public void onError(Exception e) { printStackTrace(e); } }; client.connect(); ret client; }