IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> swoole 聊天 -> 正文阅读

[PHP知识库]swoole 聊天

html代码

<!DOCTYPE html>
<html>
<head>
? ? <title></title>
? ? <meta name="viewport" content="width=device-width,initial-scale=1">
? ? <meta charset="utf-8"/>
? ? <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.4/css/bootstrap.min.css">
? ? <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.4/css/bootstrap-theme.min.css">
? ? <script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>
? ? <script src="http://cdn.bootcss.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
? ? <script src="http://cdn.bootcss.com/socket.io/1.3.5/socket.io.js"></script>
</head>
<body>
<div id="box" style="max-width:700px;margin:0 auto;">
? ? <div class="panel panel-default">
? ? ? ? <div class="panel-heading"><h2>聊天室</h2><span style="color:green;display:none;">(当前在线:<span id="length">0</span>人)</span></div>
? ? ? ? <div class="panel-body" id="body" style="height:400px;overflow-y:auto;">
? ? ? ? </div>
? ? </div>
? ? <div class="input-group">
? ? ? ? <input type="text" class="form-control" id="in" placeholder="您想说什么?" aria-describedby="basic-addon2">
? ? ? ? <span class="input-group-addon" id="basic-addon2" style="cursor:pointer;">发送</span>
? ? </div>
</div>
<div class="modal fade bs-example-modal-sm" data-backdrop="static" id="model" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
? <div class="modal-dialog modal-sm">
? ? <div class="modal-content">
? ? ? ? <div class="input-group">
? ? ? ? ? ? <input type="text" class="form-control" id="name" placeholder="请输入您的昵称" aria-describedby="basic-addon3">
? ? ? ? ? ? <span class="input-group-addon" id="basic-addon3" style="cursor:pointer;">开始聊天</span>
? ? ? ? </div>
? ? </div>
? </div>
</div>
</body>
<script>
$(document).ready(function(){
? ? window.username = 'others';
? ? var wsServer = 'ws://121.5.25.146:9505';
? ? var websocket = new WebSocket(wsServer);
? ??
? ? websocket.onopen = function (evt) {
? ? ? ? console.log("Connected to WebSocket server.");
? ? ? ? $("#model").modal('show');
? ? }; ? ?

? ? websocket.onmessage = function (evt) {
? ? ? ? console.log('Retrieved data from server: ' + evt.data);
? ? ? ? $(".panel-body").append(evt.data);
? ? ? ? //$(".panel-body").append('<p><span style="color:#177bbb">'+evt.data.username+'</span> <span style="color:#aaaaaa">('+evt.data.time+')</span>: '+evt.data.msg+'</p>');
? ? ? ? var body = document.getElementById("body");
? ? ? ? body.scrollTop = body.scrollHeight;
? ? ? ? $("#in").focus(); ? ? ? ?
? ? };
? ? $("#basic-addon2").click(function(){
? ? ? ? var msg = $("#in").val();
? ? ? ? websocket.send(msg);
? ? ? ? $("#in").val('');
? ? });?
? ? $("#basic-addon3").click(function(){
? ? ? ? window.username = $("#name").val();
? ? ? ? websocket.send("login|@|"+window.username); ? ? ? ?
? ? ? ? $("#model").modal('hide');
? ? });
});
</script>
</html>

?php服务器代码

<?php

date_default_timezone_set('PRC');
$users = array();
//创建websocket服务器对象,监听0.0.0.0:9502端口
$ws = new swoole_websocket_server("0.0.0.0", 9505);

$ws->set(array(
? ? 'worker_num' => 1,
));

//监听WebSocket连接打开事件
$ws->on('open', function ($ws, $request) {
? ?// var_dump($request->fd, $request->get, $request->server);
? ? //global $users;
? ?// var_dump($users);
? ?// $users[] = $request->fd;
? ? //var_dump($users);
? ?//$ws->push($request->fd, "hello, welcome\n");
});


//监听WebSocket消息事件
$ws->on('message', function ($ws, $frame) {
? ? global $users;
// ? ? ?var_dump($frame);
? ? $data = $frame->data;
? ? $arr = explode('n|@|',$data);
? ? if(count($arr)>1){
? ? ? $users[$frame->fd] = $arr[1];
? ? ? foreach($users as $fd=>$name){
? ? ? ? ?$ws->push($fd,'<p><span style="color:#177bbb">系统通知</span><span style="color:#aaaaaa">('.date('H:i:s').')</span>:'.$arr[1].'加入聊天</p>');
? ? ? }
? ? }else{
? ? ?// var_dump($users);
? ? ? foreach($users as $fd=>$name){
? ? ? ? //$msg = 'from'.$name.":{$frame->data}\n";
? ? ? ? $msg = '<p><span style="color:#177bbb">'.$users[$frame->fd].'</span> <span style="color:#aaaaaa">('.date('H:i:s').')</span>: '.$frame->data.'</p>';
? ? ? ? $ws->push($fd,$msg);
? ? ? }
? ? }

});

//监听WebSocket连接关闭事件
$ws->on('close', function ($ws, $fd) {
? ? echo "client-{$fd} is closed\n";
});

$ws->start();

?查看进程

ps -aux | grep index.php

执行进程

PHP index.php?

?杀死进程

kill -9 15750

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-16 10:58:33  更:2021-07-16 11:02:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/27 17:38:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码