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知识库 -> 原生php写简单的聊天室 -> 正文阅读

[PHP知识库]原生php写简单的聊天室

Websocket.php

<?php
$ws_server = new swoole_websocket_server('此处是你的域名/ip',端口号);
//设置server运行时的参数
$ws_server->set(array(
    'daemonize' => true, //是否作为守护进程
    'log_file' => __DIR__ .'/logs/web_socket.log'    //存放聊天记录日志
));
//监听WebSocket连接打开事件
$ws_server->on('open', function ($ws, $request) {
//    $ws->push($request->fd, $request->fd.' : '."Hello\n");
});

//监听WebSocket消息事件
$ws_server->on('message', function ($ws, $frame) {
    pushMessage($ws,$frame->data,$frame->fd);
});

//监听WebSocket连接关闭事件
$ws_server->on('close', function ($ws, $fd) {
    echo date('Y-m-d H:i:s').' 游客ID-'.$fd.' 退出了聊天室'."\r\n";
});

$ws_server->start();

//消息推送
function pushMessage($ws,$data,$fd){
    echo date('Y-m-d H:i:s').' 游客ID-'.$fd.':'.$data."\r\n";
    foreach($ws->connections as $dd){
        $ws->push($dd, $fd.' : '.$data);

    }
}

websocket.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>强强聊天室</title>
    <script type="text/javascript" charset="utf-8" >
        if(window.WebSocket){
           
             var url = "ws://域名或ip:端口"
            // 创建WebSocket 对象
            var webSocket = new WebSocket(url);
              console.log(webSocket.readyState);
                 if (webSocket.readyState===0) {
                   console.log("正在连接"+url+"")
                 }else if(webSocket.readyState ===1){
                      console.log("连接成功"+url+"")
                    
                      }else if(webSocket.readyState ===1){
                      console.log("正在关闭"+url+"")
                 }else if(webSocket.readyState ===1){
                      console.log("表示连接已经关闭,或者打开连接失败"+url+"")
                 }
            //连接成功时,触发事件
            
     
            webSocket.onopen = function (event) {
            };
            webSocket.onmessage = function (event) {
                var content = document.getElementById('content');
                content.innerHTML = content.innerHTML.concat('<p >游客id-'+event.data+'</p>');
                content.scrollTop = content.scrollHeight;
                document.getElementById("message").value="";
            }
            var sendMessage = function(){
                var data = document.getElementById('message').value;
                console.log("连接状态"+webSocket.readyState);
                 if (webSocket.readyState===1 && data != '') {
                    webSocket.send(data);
                 }
            }
        }else{
            console.log("浏览器不支持WebSocket");
        }
        var submitMi = function (keyNum) {
            if (keyNum == "13") {
                //回车执行查询
                if (document.getElementById('message').value != '') {
                    sendMessage();
                }
            }
        }
    </script>
    <style >
        p {
            margin-left:20px;
            height:8px;
            line-height:20px;
        }
        #title {
            text-align: center;
            margin-bottom: 10px;
        }
        #room {
            width: 600px;
            border: 1px solid #ccc;
            margin:0 auto;
        }
        #content {
            overflow-y:auto;
            height:300px;
            border: 1px solid #ccc;
        }
        #talk {
            height:40px;
            margin-top:10px
        }
        #message {
            margin-left:10px;
            height:25px;
            width:450px;
        }
        #sendButton {
            margin-left:20px;
            height:30;
            width: 70px;
        }

    </style>
</head>
<body>
    <div id="title" >基于php swoole扩展写的超简单聊天室</div>
    <div id="room" > 
        <div id="content" ></div>
        <div id="talk" >
            <input type="text" id="message"  placeholder="说点什么吧..." onkeypress="submitMi(event.keyCode)">
            <button id = "sendButton" onclick="sendMessage()" >发送</button>
        </div>
    </div>
</body>
</html>
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:02:46  更:2022-03-30 18:03:11 
 
开发: 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年5日历 -2024/5/18 17:38:20-

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