当前位置: 首页 > 工具软件 > websocketd > 使用案例 >

websocketd-0.3.0-README.md

慎旭尧
2023-12-01

websocketd

websocketd是一个小型命令行工具,它将包装现有的命令行界面程序,并允许通过WebSocket访问它。

现在可以非常轻松地构建支持WebSocket的应用程序。只要你能写一个可执行程序,读取STDIN 和写入 STDOUT,你可以建立一个WebSocket的服务器。在Python,Ruby,Perl,Bash,.NET,C,Go,PHP,Java,Clojure,Scala,Groovy,Expect,Awk,VBScript,Haskell,Lua,R等中做它!不需要网络库。

-@joewalnes

Details

启动时,websocketd 将在指定端口上启动WebSocket服务器,并侦听连接。

在连接时,它将分叉适当的进程,并在WebSocket连接关闭时断开进程(反之亦然)。

从WebSocket客户端发送的任何消息都将通过管道传输到进程的STDIN流,然后是\n换行符。

STDOUT 每当遇到换行符 \n时,进程打印的任何文本都应作为WebSocket消息发送。

Download

如果您使用的是Mac,则可以使用 Homebrew进行安装websocketd. 只要运行 brew install websocketd。对于其他操作系统,或者如果您不想使用Homebrew,请查看以下链接。

下载适用于Linux,OS X和Windows

Quickstart

首先,我们将创建一个WebSocket端点,它将接受连接,然后发送回消息,计数到10,每个消息之间暂停1秒,然后再断开连接。

为了表明它是多么简单,让我们在Bash中做到!

count.sh:

#!/bin/bash
for ((COUNT = 1; COUNT <= 10; COUNT++)); do
  echo $COUNT
  sleep 1
done

在将其转换为WebSocket服务器之前,让我们从命令行进行测试。其优点websocketd在于服务器在命令行或shell脚本中的工作方式与在服务器中的工作方式相同 - 无需修改。

$ chmod +x count.sh
$ ./count.sh
1
2
3
4
5
6
7
8
9
10

现在让我们把它变成一个WebSocket服务器:

$ websocketd --port=8080 ./count.sh

最后,让我们创建一个测试它的网页。

count.html:

<!DOCTYPE html>
<pre id="log"></pre>
<script>
  // helper function: log message to screen
  function log(msg) {
    document.getElementById('log').textContent += msg + '\n';
  }

  // setup websocket with callbacks
  var ws = new WebSocket('ws://localhost:8080/');
  ws.onopen = function() {
    log('CONNECT');
  };
  ws.onclose = function() {
    log('DISCONNECT');
  };
  ws.onmessage = function(event) {
    log('MESSAGE: ' + event.data);
  };
</script>

在Web浏览器中打开此页面。 如果您使用file:// URL 直接从磁盘打开它,它甚至会工作。

More Features

  • 安装非常简单。只需 下载 Linux,Mac或Windows的单个可执行文件并运行它。最小的依赖关系,没有安装程序,没有包管理器,没有外部库。适用于开发和生产服务器。
  • 服务器端脚本可以通过标准CGI环境变量访问有关WebSocket HTTP请求的详细信息(例如远程主机,查询参数,cookie,路径等)。
  • 除了提供websocket守护进程外,它还包括静态文件服务器和经典CGI服务器以方便使用。
  • 命令行帮助可用websocketd --help
  • 包括WebSocket开发人员控制台,以便在构建JavaScript前端之前轻松测试脚本。
  • 许多编程语言中的示例 可用于帮助您入门。

User Manual

用户手册中的更多文档

Example Projects

有更多的例子吗?打开拉取请求。

My Other Projects

 类似资料: