虽然长连接这个东西已经被广泛使用,但是真的想要了解是什么样子的时候,相关的DEMO却很少,所以本人觉得有必要记录一下
html+JS:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>sokit demo</title>
<link rel="stylesheet" type="text/css" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.css"/>
<style type="text/css">
.msg-container{ height: 300px; overflow-y: scroll; overflow-x: hidden; padding-top: 50px;}
.msg-item{padding: 15px; line-height: 1.5em;}
.msg-item.right{ background: #;}
.msg-item.label{ display: inline-block;}
</style>
</head>
<body>
<div class="container">
<div class="text-center">hello mackes</div>
<div class="msg-container">
<div class="col-xs-12 form-group">
<div class="col-md-8">
<div class="msg-item left label label-info">
你好,可爱的小家伙
</div>
</div>
</div>
<div class="col-xs-12 form-group">
<div class="col-md-8 col-md-offset-4 text-right">
<div class="msg-item right label label-warning">
你好,可爱的小家伙
</div>
</div>
</div>
<div class="col-xs-12 form-group">
<div class="col-md-8 col-md-offset-4 text-right">
<div class="msg-item right label label-warning">
你好,可爱的小家伙
</div>
</div>
</div>
</div>
<div>
<input type="text" id="msg" class="form-control" value="" placeholder="请输入聊天信息" />
</div>
<div class="text-center"><button class="btn btn-success btn-block">SEND</button></div>
</div>
<!--<script src="https://cdn.bootcss.com/socket.io/2.0.3/socket.io.js" type="text/javascript" charset="utf-8"></script>-->
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
var es = new EventSource('msg.php');
es.onmessage = function (e) {
console.log(e.data);
// 然后做点什么..
html= '<div class="col-xs-12 form-group">'+
'<div class="col-md-8 col-md-offset-4 text-right">'+
'<div class="msg-item right label label-warning">'+
e.data+
'</div>'+
'</div>'+
'</div>';
$('.msg-container').append(html);
};
</script>
</body>
</html>
msg.php
<?php header('Content-Type: text/event-stream'); header('Cache-Control: no-cache'); $time = date('r'); echo "data: hello \n\n"; flush(); ?>
搭起来看一下你就明白了,后端注意关键的两点:
1、header('Content-Type: text/event-stream');
2、echo “data: xxxxxx \n\n”; 这个格式