websocketd:实现通过WebSocket访问服务器端的命令行接口程序

网友投稿 1192 2022-10-29

websocketd:实现通过WebSocket访问服务器端的命令行接口程序

websocketd:实现通过WebSocket访问服务器端的命令行接口程序

websocketd

websocketd is a small command-line tool that will wrap an existing command-line interface program, and allow it to be accessed via a WebSocket.

WebSocket-capable applications can now be built very easily. As long as you can write an executable program that reads STDIN and writes to STDOUT, you can build a WebSocket server. Do it in Python, Ruby, Perl, Bash, .NET, C, Go, PHP, Java, Clojure, Scala, Groovy, Expect, Awk, VBScript, Haskell, Lua, R, whatever! No networking libraries necessary.

-@joewalnes

Details

Upon startup, websocketd will start a WebSocket server on a specified port, and listen for connections.

Upon a connection, it will fork the appropriate process, and disconnect the process when the WebSocket connection closes (and vice-versa).

Any message sent from the WebSocket client will be piped to the process's STDIN stream, followed by a \n newline.

Any text printed by the process to STDOUT shall be sent as a WebSocket message whenever a \n newline is encountered.

Download

If you're on a Mac, you can install websocketd using Homebrew. Just run brew install websocketd. For other operating systems, or if you don't want to use Homebrew, check out the link below.

Download for Linux, OS X and Windows

Quickstart

To get started, we'll create a WebSocket endpoint that will accept connections, then send back messages, counting to 10 with 1 second pause between each one, before disconnecting.

To show how simple it is, let's do it in Bash!

count.sh:

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

Before turning it into a WebSocket server, let's test it from the command line. The beauty of websocketd is that servers work equally well in the command line, or in shell scripts, as they do in the server - with no modifications required.

$ chmod +x count.sh$ ./count.sh12345678910

Now let's turn it into a WebSocket server:

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

Finally, let's create a web-page to test it.

count.html:

Open this page in your web-browser. It will even work if you open it directly from disk using a file:// URL.

More Features

Very simple install. Just download the single executable for Linux, Mac or Windows and run it. Minimal dependencies, no installers, no package managers, no external libraries. Suitable for development and production servers.Server side scripts can access details about the WebSocket HTTP request (e.g. remote host, query parameters, cookies, path, etc) via standard CGI environment variables.As well as serving websocket daemons it also includes a static file server and classic CGI server for convenience.Command line help available via websocketd --help.Includes WebSocket developer console to make it easy to test your scripts before you've built a JavaScript frontend.Examples in many programming languages are available to help you getting started.

User Manual

More documentation in the user manual

Example Projects

Plot real time Linux CPU/IO/Mem stats to a HTML5 dashboard using websocketd and vmstat (for Linux)Arbitrary REPL in the browser using websocketdRetrieve SQL data from server with LiveCode and webSocketdList files from a configured folder (for Linux)Listen for gamepad events and report them to the system (this + android = gamepad emulator)

Got more examples? Open a pull request.

My Other Projects

ReconnectingWebSocket - Simplest way to add some robustness to your WebSocket connections.Smoothie Charts - JavaScript charts for streaming data.Visit The Igloo Lab to see and subscribe to other thingies I make.

And follow @joewalnes!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:BraTS18——多模态MR图像脑肿瘤分割挑战赛续4
下一篇:医学图像处理案例(四)——生成人体骨骼和肺组织三维模型
相关文章

 发表评论

暂时没有评论,来抢沙发吧~