如何在websocketd中处理完整的websocket事件集?

时间:2017-01-15 07:09:48

标签: websocket

我当时正在考虑使用websocketd作为Web套接字服务器,但我不知道如何使用它来响应整套websocket事件,例如onerror和onclose。

2 个答案:

答案 0 :(得分:2)

你要求的不是它的工作原理。你没有对websocketd进行编程,也没有任何事件。您可以使用独立工具来包装其他程序,然后每个传入连接都会启动您已将其配置为包装的程序实例。然后,任何传入的消息都被发送到该程序的stdin,并且来自程序的任何stdout响应被发送回连接到websocket服务器的客户端。您可以将其视为一种工具,它只是将传入的websockets消息转发到您的应用程序的stdin,并捕获输出并将其转发回客户端。

正如您可能知道的那样,我们的想法是,如果不自行进行任何服务器编程,您可以为计算机上的任何命令行工具创建一个远程接口(具有相关的警告/风险),该工具可以从中获取输入stdin并将其输出写入stdout。该远程接口可以位于网页中,也可以是您编写的任何其他程序,该程序使用webSocket与您在主机上配置并运行的websocketd服务器进行通信。所以你只写客户端的东西。 websocketd doc没有说明它在stderr上找到的输出功能。

当Web套接字客户端连接到此websocket服务器时,您的程序实例将启动。所以,实质上,onconnect事件就是你的程序开始了。当客户端断开连接时,它将终止您的程序(基本上是onclose事件)。

如果在将数据发送回客户端时出现webSocket错误,它的作用尚不清楚。你必须在这里解析代码https://github.com/joewalnes/websocketd以试图解决这个问题(它似乎是用go写的。大概是因为它是服务器本身而且那里有''没有接口,可能发生的最多是记录错误或webSocket断开连接。如果不修改代码,就没有规定你参与webSocket通信错误时会发生什么守护进程具有预编程的行为。

我确实看到示例here in the code,它处理来自阅读stdout的错误,并记录这些错误,然后关闭stdout流。

code here似乎会在传入的webSocket读取错误时关闭它。

答案 1 :(得分:0)

像onclose和onerror这样的Websocket事件是通过Javascript事件处理程序处理的。用Javascript内置的浏览器提供接口! https://developer.mozilla.org/de/docs/Web/API/WebSocket 一些代码示例: https://www.bitkistl.com/2019/12/websocketd-example-with-better_27.html