workerman 聊天初探
学习使用websocket链接 进行网页的实时聊天
首先需要下载一个 workerman 点这里
就是先使用前段画一个聊天窗口,然后进行聊天的模拟
如图
css代码
.layui-box{width:500px; height:400px; position:absolute; left:50%; margin-left:-251px; top:50%; margin-top:-201px; border:1px solid #dedede;} .layui-title{line-height:40px; padding-left:20px; border-bottom:1px solid #dedede;} .msg-list{overflow-y:scroll; height:250px;border-bottom:1px solid #dedede;} .msg-item{border:1px solid #dedede; padding:5px 10px; border-radius:5px;margin:5px 10px; float:left; font-size:14px; max-width:350px;} .user-name{font-size:12px; color:#999; display:block;margin-bottom:5px;} .user-msg{} .clear{clear:both} .my-msg{float:right;background:#51C332} .msg-sendbox{height:40px;padding:10px; overflow-y:scroll} .layui-btn{float:right; margin-right:15px; margin-top:5px;}
html代码
<div class="layui-box"> <div class="layui-title">聊天</div> <div id="some_id" class="msg-list"> </div> <div class="msg-sendbox" contenteditable="true"> </div> <div class="layui-btn layui-btn-sm" onclick="sendmsg()">发 送</div> </div>
js代码
layui.use('layer',function(){ $ = layui.jquery; }); ws = new WebSocket("ws://127.0.0.1:2000"); ws.onmessage = function(e) { msgItem = '<div class="msg-item">\ <span class="user-name">system:</span>\ <div class="user-msg">'+ e.data+'</div>\ </div><div class="clear"></div>'; $(".msg-list").append(msgItem); }; function sendmsg(){ msg = $.trim($('.msg-sendbox').html()); if(msg.length ==0){ layer.msg("不能发送空文字") return false; } ws.send(msg); msgItem = '<div class="msg-item my-msg">\ <div class="user-msg">'+msg+'</div>\ </div><div class="clear"></div>'; $(".msg-list").append(msgItem); $('.msg-sendbox').html(''); }
到此前段结束 请将上面的代码放入一个html页面中
然后 写一个php程序 ws_test.php 照抄的
use Workerman\Worker; require_once __DIR__ . '/workerman/Autoloader.php'; // 注意:这里与上个例子不同,使用的是websocket协议 $ws_worker = new Worker("websocket://0.0.0.0:2000"); // 启动4个进程对外提供服务 $ws_worker->count = 4; // 当收到客户端发来的数据后返回hello $data给客户端 $ws_worker->onMessage = function($connection,$data) { global $ws_worker; foreach($ws_worker->connections as $conn){ $conn->send('hello ' . $data); } // 向客户端发送hello $data }; // 运行worker Worker::runAll();
最后cmd运行一下
php ws_test.php start
运行一下吧!