lzy888 发表于 2015-9-23 21:39:45

请教关于网页实时显示数据的问题

最近申请了一台阿里云的服务器,php环境。现在想实现这个功能,我的设备用串口和一台电脑连接,电脑把串口接收过来的数据发送到服务器上面,然后在任何一台电脑上打开服务器的网页就可以看到数据的实时变化,请问接收串口数据的电脑该怎样发送数据到服务器上,或者说的简单一点儿就是电脑如何把自己的数据发送给服务器,然后在服务器的网页上实时显示?
想了一个办法就是在服务器上把收到的数据存成一个文件,然后用ajax去读这个文件,但是感觉这样不好,肯定有更省事的办法,听说过GET打包方式,但是不知道怎么用,php代码该怎么写,求各位指点一下

3050311118 发表于 2015-9-23 22:34:51

websocket      

aozima 发表于 2015-9-23 23:03:28

ajax足以满足绝大部分需求了,通用 简单

lzy888 发表于 2015-9-24 08:00:54

谢谢回复,还是不明白啊,能否说详细一点儿

qq78929709 发表于 2015-9-24 09:50:09

有两种办法,一是按你说的,用socket来传输,在服务器建个TCP服务端,然后把接收到的数存到一个文件,WEB的服务端实时得读。
二是用http来传输,WEB的服务端提供一个接收数据的API,就是一个PUT请求,然后电脑发数据就发PUT请求。

lzy888 发表于 2015-9-24 10:04:04

qq78929709 发表于 2015-9-24 09:50
有两种办法,一是按你说的,用socket来传输,在服务器建个TCP服务端,然后把接收到的数存到一个文件,WEB的 ...

第二种方法能否举个例子,服务器是用php程序读吧,谢谢

qq78929709 发表于 2015-9-24 10:10:11

lzy888 发表于 2015-9-24 10:04
第二种方法能否举个例子,服务器是用php程序读吧,谢谢

php我不太懂,php接收put请求你会写么

lzy888 发表于 2015-9-24 10:16:33

qq78929709 发表于 2015-9-24 10:10
php我不太懂,php接收put请求你会写么

php也是刚看了两天,这个真不会,百度一下吧

atommann 发表于 2015-9-24 10:25:45

本帖最后由 atommann 于 2015-9-24 10:26 编辑

用 HTTP GET 方法,相当于你把数据嵌入到 URL 里,周期性地向你的服务器请求那个网址,服务器端用 PHP 脚本抓取 URL 中的内容。这里有一个简单的例子:
https://github.com/atommann/temperature-sensor-recorder
代码是一个朋友写的。

qq78929709 发表于 2015-9-24 10:29:16

atommann 发表于 2015-9-24 10:25
用 HTTP GET 方法,相当于你把数据嵌入到 URL 里,周期性地向你的服务器请求那个网址,服务器端用 PHP 脚本 ...

问一下,为什么不用PUT方法呢,把数据嵌入到URL不是很麻烦吗,也传不了长数据。

atommann 发表于 2015-9-24 10:35:05

qq78929709 发表于 2015-9-24 10:29
问一下,为什么不用PUT方法呢,把数据嵌入到URL不是很麻烦吗,也传不了长数据。 ...

好像还可以用 POST 方法。

如果要传更多的数据,我觉得应该直接用 socket 编程。直接向服务器端发 JSON 数据包。还有一个可用的技术是 MQTT http://mqtt.org/

不过网页方面的技术我也很多都不明白。

atommann 发表于 2015-9-24 10:38:14

另外,如果楼主现阶段不想研究服务器端的技术,还可以利用一些现有的服务器端服务。比如:
https://data.sparkfun.com/ sparkfun 这个网站的所有代码是开源的,可以安装在自己的服务器上。
https://thingspeak.com/

关于如何上传数据到 sparkfun 和 thingspeak 以及数据的可视化,他们网站上都有相关的教程。

qq78929709 发表于 2015-9-24 10:40:28

是post,不是put,唉,多年没写,名称都忘了。{:lol:}

cece_co 发表于 2015-9-24 11:05:18

可以用post把数据传给服务器,服务器接收到数据后再在前端显示!ajax也可以用的

lzy888 发表于 2015-9-24 11:17:47

电脑上传的数据怎么post或者get给服务器啊,上传数据的电脑上不一定运行浏览器的...另外服务器的php代码怎么收到发送数据的电脑上的数据,然后在任何一台电脑上打开浏览器就能看到呢,网络小白,还是不明白啊
,哪位给举个最简单的例子

lzy888 发表于 2015-9-24 11:21:36

本帖最后由 lzy888 于 2015-9-24 11:25 编辑

有没有模拟http get打包的软件?比如我在发送数据的电脑上打开这个软件,然后在这个软件上输入数据,软件把数据http打包发给服务器,服务器上怎么用php收数据,然后在任何一个电脑的浏览器上显示出来?
这个问题牵扯到三个方面:发送数据的电脑所使用的软件,服务器上的代码,任何一个用户电脑上的浏览器.

我说的第一种在服务器上存文件的方法很容易实现这个目的,但是不停地存取文件是很费硬盘的,所以才需要知道另一种方法

atommann 发表于 2015-9-24 11:59:34

在电脑上可以用 Python 等脚本语言写一个脚本,把数据编码进 URL 里,定时向服务器(IP 地址是已知的)发起 HTTP GET/POST 请求
还可以用 CURL
https://en.wikipedia.org/wiki/CURL

atommann 发表于 2015-9-24 12:10:33

这时有几个可供参考的例子
1. Pushing Data to Data.SparkFun.com
https://learn.sparkfun.com/tutorials/pushing-data-to-datasparkfuncom/raspberry-pi-python

2.SparkFun's Phant.io; libcurl and sqlite on Raspberry Pi
http://ivyco.blogspot.hk/2014/09/post-data-to-sparkfuns-phant-using.html
https://github.com/claudiuo/raspberrypi/blob/master/433MHz-Arduino-link/RFRcvCmplxData.cpp

你可以用 libcurl 编程来发数据。

lzy888 发表于 2015-9-24 12:11:08

atommann 发表于 2015-9-24 11:59
在电脑上可以用 Python 等脚本语言写一个脚本,把数据编码进 URL 里,定时向服务器(IP 地址是已知的)发起 H ...

谢谢,从一台电脑定时发送post或者get请求,那么服务端代码该怎么接收? 问题是服务器的代码只相应浏览器的js命令,而发送数据的电脑并没有运行浏览器

atommann 发表于 2015-9-24 12:16:45

lzy888 发表于 2015-9-24 12:11
谢谢,从一台电脑定时发送post或者get请求,那么服务端代码该怎么接收? 问题是服务器的代码只相应浏览器的j ...

服务器端我不懂。
发送端不需要浏览器,在命令行或写成一个可执行文件就可以了。
你可以先看看我上面贴的几个例子就会有一个大概的概念。

rundream 发表于 2015-9-24 15:49:46

本帖最后由 rundream 于 2015-9-24 15:52 编辑

如果你的服务器只能是php环境的话,那么比较容易实现的方式是:

电脑的提交数据就基于http协议post到服务器。而客户端又是基于get方式从服务器获取数据。

(客户端打开的网页里面,定一个定时器脚本,定时刷新网页。就可以自动刷新最新的值了)

两端都是基于php脚本,一个是接收数据的php脚本,一个是显示数据的php脚本。

这两个php脚本之间存在一个变量传递的关系, 这个可以通过一个json文件,或者简单的文本文件,或者是数据库来实现。
页: [1]
查看完整版本: 请教关于网页实时显示数据的问题