Linux终端与服务器通信

时间:2013-09-19 21:27:10

标签: 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个覆盆子pi单元,我只是在寻找最有效的方法。

1 个答案:

答案 0 :(得分:1)

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

您可以将数据从服务器推送到客户端,而不是轮询(价格昂贵但易于实施)。

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

使用nginx执行此操作需要额外的模块,例如: https://github.com/wandenberg/nginx-push-stream-module