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写简单的聊天室相关推荐

  1. java udp简单聊天程序_Java基于UDP协议实现简单的聊天室程序

    最近比较闲,一直在抽空回顾一些java方面的技术应用. 今天没什么事做,基于udp协议,写了一个非常简单的聊天室程序. 现在的工作,很少用到socket,也算是对java网络编程方面的一个简单回忆. ...

  2. Netty - 一个简单的聊天室小项目

     经过一段时间对Netty的学习,我们对Netty各版本以及像ProtocolBuffers等技术应用都有了不少相关的了解, 我们就用这段时间学到的只是做一个简单的聊天室的小项目来练习自己学到的技术. ...

  3. 局域网服务器发送消息,Java实现简单局域网聊天室

    本文实例为大家分享了Java实现简单局域网聊天室的具体代码,供大家参考,具体内容如下 Java 的Socket编程: 1.TCP协议是面向连接的.可靠的.有序的.以字节流的方式发送数据,通过三次握手方 ...

  4. java udp 聊天室_Java基于UDP协议实现简单的聊天室程序

    最近比较闲,一直在抽空回顾一些Java方面的技术应用. 今天没什么事做,基于UDP协议,写了一个非常简单的聊天室程序. 现在的工作,很少用到socket,也算是对Java网络编程方面的一个简单回忆. ...

  5. python聊天室详细教程_python简单实现聊天室功能(代码教程)

    聊天室程序需求: 我们要实现的是简单的聊天室的例子,就是允许多个人同时一起聊天,每个人发送的消息所有人都能接收到,类似于 QQ 群的功能,而不是点对点的 QQ 好友之间的聊天.如下图: 这里我们首先要 ...

  6. ICE专题:实现简单的聊天室(一)

    目标:实现一个简单的聊天室.本文实现的聊天室仅出于演示ICE的多播功能,即由一个Client发送的消息,广播至注册的其他Client上.以后的系列文章,将逐步完善这个例子,使其成为一个现实意义上可用的 ...

  7. C++写的一个聊天室代码,用于XEIM开源即时通讯软件上的

    // C++写的一个聊天室代码,用于XEIM开源即时通讯软件上的,欢迎大家一起交流. // XEIM_ChatroomDlg.cpp : implementation file // [即时通讯软件] ...

  8. Application对象 简单的聊天室

    使用Application对象可以使得多个用户在访问同一个asp.net应用程序时,能够共享信息,在多个用户同时访问asp.net时,都会产生一个Application对象.通常可以把共享的数据变量存 ...

  9. java 简单的聊天室_Java简单聊天室

    实现Java简单的聊天室 所用主要知识:多线程+网络编程 效果如下图 /** * * @author Administrator * *简单的多人聊天系统--重点:同时性,异步性 *1.客户端:发送消 ...

最新文章

  1. 001_Redis介绍
  2. Strategic Game
  3. 计算机网络和传统电话网络的最大区别是,传统电话和网络电话有什么区别
  4. 工业相机(3D)主要参数详述
  5. gitbash登录码云报错_手把手教你入门git仓库和关联码云
  6. 大型网站架构系列:电商网站架构案例(1)
  7. keytool生成证书_基于 TrueLicense 的项目证书验证
  8. SQL中char varchar nchar nvarchar ntext区别和使用(资料汇总)
  9. WPF: 本地化(Localization) 实现
  10. java面试题jvm_经典面试题|讲一讲JVM的组成
  11. yolo5纸张卡片顶点检测,实现任意倾斜角度较正
  12. python中分支语句elif与else的区别_浅谈对python中if、elif、else的误解
  13. 012-JDK可视化监控工具-jstack
  14. BlenderPython (三)bpy模块
  15. 清除xcode缓存文件以及清楚mac 微信缓存
  16. 2021年数学建模国赛C题问题四及模型检验
  17. 到底什么是上下文(Context)
  18. 洛谷P2791 幼儿园篮球题
  19. 什么是框架,到底为什么要使用框架?
  20. table表格自动滚动

热门文章

  1. vsCode 源代码管理插件GitLens使用指南
  2. 石灰墙上的这种污渍怎么去掉?黑色灰色的
  3. windows安装cygwin
  4. 计算机监控系统维护重点,计算机监控系统维护规程
  5. Lp_LIBRARY 相关问题解决
  6. Spring框架——applicationContext.xml配置文件头部xmlns
  7. 一个炒鸡简单计算拼音声母出现次数及概率程序
  8. 机顶盒抓包(无法连接WIFI的设备)
  9. 知名互联网公司都在使用哪些数据库
  10. Android视频录制,保存图片,视频到本地后本地相册或者视频库里面没有的解决方案