Linux终端与服务器通信

标签 linux sockets terminal websocket netcat

我有一个在终端中运行的脚本,它每 2 秒从 PHP 脚本轮询一次服务器以获取 0 或 1,然后根据结果执行命令。

不重要的提示:它在树莓派上运行。

所以我的问题是:是否有更好的方式与服务器通信? 理想的是像 socket.io 或 html5 websocket 类型的连接,但这些连接在终端上是不可行的。

这是我所拥有的,以便您了解要点

while :
 do

gpio mode 0 out
gpio mode 7 out

var1=$(curl http://url.com/index.php)
L1=$(echo $var1 | cut -c1-1)
L7=$(echo $var1 | cut -c7-7)
if [ $L1 == 0 ]; then
gpio write 0 0
elif [ $L1 == 1 ]; then
gpio write 0 1
fi

if [ $L7 == 0 ]; then
gpio write 7 0
elif [ $L7 == 1 ]; then
gpio write 7 1
fi

gpio readall
sleep 2

done

编辑:我需要在同一台服务器上运行大约 1000 个树莓派单元,我只是在寻找最有效的方法。

最佳答案

有很多方法可以做到这一点。 HTTP 不是最适合这个的协议(protocol)(因为它不支持 session ),但是因为你已经在使用它了。让我们看看 HTTP 的解决方案。

您可以将数据从服务器推送到客户端,而不是轮询(这很昂贵但实现起来很简单)。

要使用 HTTP 执行此操作,请使用 COMET,它是执行此操作的几种不同技术的总称。参见 http://en.wikipedia.org/wiki/Comet_%28programming%29

用 nginx 做这个你需要一个额外的模块,例如: https://github.com/wandenberg/nginx-push-stream-module

关于Linux终端与服务器通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18905205/

相关文章:

linux - pdo 驱动程序在 linux 中没有显示任何值

c - 如何使用 ncurses 创建选项按钮

linux - Unix 守护程序服务错误(使用骨架模板)。启动但状态显示它不工作

C - 如何抑制子函数的输出?

linux - git 可以用空的 repo 路径推送吗?

python - 如何确定非阻塞套接字是否真正连接?

linux - 通过 TCP 快速发送/接收数据会导致阻塞

PHP 套接字连接到 TCP 服务器

linux - 在 bash 脚本中使用 "alternate screen"

python - 在新的终端窗口中打印