因为我做的应用需要像股票系统一样,实时刷新显示设备的基本状态参数信息。并且是内部系统,浏览器是由我们提供,所以我想采用HTML5的SSE(server-sent events)服务器发送事件来替代原始的AJAX,以降低服务器的压力以及更高的显示效果。我的前端页面://建立SSE对象
var source=new EventSource("test.php");
var gdata = null;
var a = null;
source.onmessage = function(event)
{
a = event;
gdata = event.data;
gdata = JSON.parse(gdata);
}
后台页面:header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$arr = array();
// 这里生成$arr数组,具体过程略去
$str = json_encode($arr);
echo "data:{\042Rows\042:$str}";
flush();
sleep(0.1);
在Firefox里,我的SSE显示正常,可以访问到gdata变量
但是Chrome里却不行。但是根据HTML5test的结果来看,Chrome应该是支持SSE的
所以特地来问问,是不是我设置的问题?希望知道的朋友帮我解决下
var source=new EventSource("test.php");
var gdata = null;
var a = null;
source.onmessage = function(event)
{
a = event;
gdata = event.data;
gdata = JSON.parse(gdata);
}
后台页面:header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$arr = array();
// 这里生成$arr数组,具体过程略去
$str = json_encode($arr);
echo "data:{\042Rows\042:$str}";
flush();
sleep(0.1);
在Firefox里,我的SSE显示正常,可以访问到gdata变量
但是Chrome里却不行。但是根据HTML5test的结果来看,Chrome应该是支持SSE的
所以特地来问问,是不是我设置的问题?希望知道的朋友帮我解决下
解决方案 »
- 各位我遇到了一个问题,请教大家,想让浮层的高度自适应但是被屏幕高度挡住了?怎么办?
- 怎样才能取消Scripting.FileSystemObject弹出来的提示呢?
- Js问题
- 函數問題,想不通,為什么就是調用不了呢?
- 我想横向打印
- 如何在页面中加入分页栏?就像excel的sheet那样的,在上面的也行
- 在IE浏览器的菜单栏中,点击'文件',选择"关闭",这个关闭页面的事件如何得到?我可以得到点击X和Alt+F4的
- 从一个页面中打开另外一个页面,如何使用第一个页面的变量值?(javascript)
- 急急如火令!关于Frame的问题
- 如何通过验证表单中的所有域不为空
- 文本框验证,只能输入字母开头
- 新手小白问个简单的问题。关于checkbox全选全不选的问题。
{
gdata = event.data;
gdata = JSON.parse(gdata);
})
后台发送的时候,还需要添加一个event记录,代码如下header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$arr = array();
// 这里生成$arr数组,具体过程略去
$str = json_encode($arr);
echo "event:newdata\n";
echo "data:{\042Rows\042:$str}"."\n\n";
flush();
这样在Chrome和Firefox里都可以正常使用SSE。
同时请注意,在输出的数据后,记得使用\n输出换行,否则数据可能会出现问题