一个server-send events的小demo,后端用php实现

<!DOCTYPE html>
<html>
<head>
 	<title>server-sent event test</title>
 	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js" ></script>
</head>
<body>
    <p> Chat System </p>
	<ul id="chat_list"></ul>
	<label>Name</label>
	<input id="chat_name" />
	<input id="chat_input" />
	<button οnclick="sendData()">发送</button>
</body>
<script  type="text/javascript" >
	var bConnected = false;

	function sendData() {
		var name = document.getElementById("chat_name").value;
		if (!name) {
			return alert("plz input your name");
		}
		if (!bConnected) {
			document.getElementById("chat_name").disabled = true;
			bConnected = true;
			connect();
		}
		var data = document.getElementById("chat_input").value;
		if (data) {
			jQuery.ajax("chat.php?type=chat&data=" + escape(data) + "&name=" + escape(name), {
				cache: false,
				type: "GET",
				success: function(data) {
				},
				error: function(xhr, errorstatus, errorthrow) {
					console.log(errorthrow);
				}
			});
		}
	}

	function connect() {
		var name = document.getElementById("chat_name").value;
		if (!name) {
			return alert("plz input your name");
		}
		var eventSrc = new EventSource('chat.php?type=eventResource&name=' + escape(name));
		console.log("add event success");

		eventSrc.addEventListener('open', function(event) {
		});

		eventSrc.addEventListener('message', function(event) {
			
			if (event.type == "message") {
				var msg = document.createElement("li");
				if(!event.data)return;
				msg.innerHTML = event.data;
				document.getElementById("chat_list").appendChild(msg);
			}
		});
	};
</script>
</html>

  chat.html

<?php

$filename = 'chat.txt';

if($_GET['type'] == 'chat'){
	getMsg();
}else{
	$msg = file_get_contents($filename);
	file_put_contents($filename, '');
	$msg = $msg?$msg:'';	
	dispatchMsg($msg);

}

function getMsg(){
	$msg = $_GET['data'];	
	file_put_contents('chat.txt', $msg);
}


function dispatchMsg($msg){	
	header("Content-Type:text/event-stream");
	echo "data: " . $msg  . "\r\n\r\n";
	
}


?>

  chat.php

 

具体文章参考: http://www.fanjun.me/?tag=server-sent-events

 

 

 

转载于:https://www.cnblogs.com/vanillalyx/archive/2012/08/03/2621896.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值