php即时聊天的框架_workerman-chat(PHP开发的基于Websocket协议的聊天室框架)(thinkphp也是支持socket聊天的)...

workerman-chat(PHP开发的基于Websocket协议的聊天室框架)(thinkphp也是支持socket聊天的)

一、总结

1、下面链接里面还有一个来聊的php聊天室源码可以学习

2、workerman-chat是一个以workerman作为服务器容器,使用PHP开发的基于Websocket协议的一个可分布式部署的聊天室框架。

3、thinkphp也是支持socket聊天的:链接:PHP socket聊天 - ThinkPHP框架:http://www.thinkphp.cn/code/634.html

二、workerman-chat(PHP开发的基于Websocket协议的聊天室框架)

PHP聊天室框架

workerman-chat是一个以workerman作为服务器容器,使用PHP开发的基于Websocket协议的一个可分布式部署的聊天室框架。

workerman-chat采用gateway workers 进程模型。gateway只负责网络IO,全异步非阻塞,每个gateway进程都可以同时接受上万客户端连接。 workers采用的是PHP开发者所熟悉的同步模型,并提供了开发者基本的接口 onConnect、onMessage、onClose、sendToClient、sendToAll等方法。 开发者只要在onConnect、onMessage、onClose三个方法中添加上自己的业务逻辑即可,开发维护非常简单。

由于采用的是gateway workers 进程模型,gateway和workers之间是无状态的,gateway和workers可以分别部署在不同的物理机上,所以扩容和升级都非常方便。 workerman-chat也非常适合游戏后台开发。

下载

特性

使用PHP开发

PHP多进程

gateway workers进程模型

支持libevent事件轮询库,支持高并发

默认使用Websocket协议,更小带宽,更好性能

支持分布式部署,可横向扩容

客户端跨浏览器支持(需要浏览器支持html5或者flash)

多房间支持

支持私聊

支持心跳检测

同样非常适合游戏后台开发

linux环境安装启动

1、下载workerman-chat,并解压缩到任意目录

2、启动workermanphp start.php start -d如下图。

0e6149754c81f2ed582d8052733a818c.png

3、浏览器访问端口http://ip:55151或者http://域名:55151,例如 http://workerman.net:55151如图:(如果无法访问请检查服务器防火墙)

60b9dd0c0b47f51d9bbdfe23ab639859.png

Windows版本安装启动

1、点击这里下载windows版本聊天室源码

2、参考这里设置PHP环境变量

3、双击start_for_win.bat运行

4、浏览器访问http://127.0.0.1:55151 (如果服务端不在本地,请把127.0.0.1改成实际服务端ip或者域名)

5、关闭终端停止

说明

本聊天室业务逻辑非常简单,业务逻辑都在文件./Applications/Chat/Events.php中,开发者可以随意修改,比如增加表情等功能

其它php聊天室相关案例

参考:

workerman-chat | 一个高性能的PHP 聊天室框架

http://www.workerman.net/workerman-chat

python测试基于websocket协议的即时通讯接口

随着html5的广泛应用,基于websocket协议的即时通讯有了越来越多的使用场景,本文使用python中的websocket-client模块来做相关的接口测试 import webclient ...

使用JMeter测试基于WebSocket协议的服务

使用JMeter测试基于WebSocket协议的服务 :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba( ...

Jmeter对基于websocket协议的压力测试

WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex).   浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就 ...

基于WebSocket协议的性能测试

互联网应用时代,用户获取信息的方式从传统媒体到新媒体,信息时效性对通信技术要求越来越高, HTTP协议已经不能适用.于是WebSocket出现了,它实现浏览器与服务器的全双工通信,服务端主动向客户端发 ...

C++开发的基于UDP协议的聊天工具

项目相关地址 源码:https://github.com/easonjim/UDPChat bug提交:https://github.com/easonjim/UDPChat/issues

C++开发的基于TCP协议的内网聊天工具

项目相关地址 源码:https://github.com/easonjim/TCPChat bug提交:https://github.com/easonjim/TCPChat/issues

使用go,基于martini,和websocket开发简易聊天室

一.首先,需要了解一下websocket基本原理:here 二.go语言的websocket实现: 基于go语言的websocket也有不少,比如github.com/gorilla/websocke ...

基于HTTP协议的几种实时数据获取技术

原文链接https://www.cnblogs.com/xrq730/p/9280404.html,作者博客园----五月的仓颉,转载请注明出处,谢谢 HTTP协议 HTTP协议大家都很熟悉了,开始本 ...

基于 HTTP 协议的几种实时数据获取技术(转)

HTTP协议 HTTP协议大家都很熟悉了,开始本文之前,首先简单回顾一下HTTP协议. HTTP协议是建立在TCP协议上的应用层协议,协议的本质是请求----应答: 即对于HTTP协议来说,服务端给一 ...

随机推荐

掌握Thinkphp3.2.0----自动验证

自动验证是TP在create数据的时候,自动对数据进行验证. TP提供了两种验证方式:静态验证($_validate属性----自定义的模型的)和validate()方法 1.静态验证-----$_v ...

AX2012自定义注释脚本开发

废话少说,直接进入主题: 1.在类xppSource中增加一个类似的方法: eg. Source ifElse(Source _condition = '', Source _ifStatement ...

centos 安装haproxy 1.6.3

yum install libtermcap-devel ncurses-devel libevent-devel readline-devel gcc gcc-c++ pcre pcre-devel ...

自动扫描FTP文件工具类 ScanFtp.java

package com.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ja ...

Android Service命令

service可给Android 服务传消息,具体用法如下: Usage: service [-h|-?]        service list        service check SERVI ...

H3C BFD MAD检测方式的IRF典型配置举例

一.组网需求 由于网络规模迅速扩大,当前中心交换机(Device A)转发能力已经不能满足需求,现需要在保护现有投资的基础上将网络转发能力提高一倍,并要求网络易管理.易维护. 二.组网图 三.配置思路 ...

Hdoj 2041.超级楼梯 题解

Problem Description 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法? Input 输入数据首先包含一个整数N,表示测试实例的个数,然后是 ...

从零开始unity特效(持续追加中)

打算重拾3d渲染了,计划把主要理论过一遍,每部分琢磨一个言之有物的demo. 因为很多东西要现学,再加上上班-8h,更新会比较慢,但会坚持. (待续) -------houdini+unity河流(2 ...

【PMP】项目采购管理~重点知识

1.合同的类型与区别 固定总价(FFP):大多数买方都喜欢这种合同,因为货物的采购价格在一开始就已确定,并且不允许改变(除非工作范围发生变更) 总价加激励费用(FPIF):这种总价合同给买方和卖方提供 ...

VirtualBox如何扩展虚拟机Ubuntu的硬盘容量?

一.问题描述 刚刚在VirtualBox中使用Ubuntu虚拟机中,出现了虚拟硬盘不够用的情况.  乖乖,查了一下磁盘空间,如下所示: df -H 原来是上午安装Ubuntu虚拟机的时候,选择了动态分 ...

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
想要实现 WebSocket 聊天室功能,需要以下步骤: 1. 创建一个 WebSocket 服务器 使用 PHP 的 Swoole 扩展可以快速创建一个 WebSocket 服务器,代码如下: ``` $server = new Swoole\WebSocket\Server("0.0.0.0", 9501); // 监听 WebSocket 连接事件 $server->on('open', function (Swoole\WebSocket\Server $server, $request) { echo "opened: {$request->fd}\n"; }); // 监听 WebSocket 消息事件 $server->on('message', function (Swoole\WebSocket\Server $server, $frame) { echo "received message: {$frame->data}\n"; }); // 启动服务器 $server->start(); ``` 2. 处理聊天消息 在上面的代码中,当接收到 WebSocket 消息事件时,会输出消息内容。我们可以根据消息内容来处理聊天室功能。比如,如果消息内容是“加入房间”,我们可以将该用户加入到聊天室中,如果消息内容是“发送消息”,我们就将该消息发送给所有人。代码示例: ``` $server->on('message', function (Swoole\WebSocket\Server $server, $frame) { $data = json_decode($frame->data, true); switch ($data['action']) { case 'join': // 将用户加入到聊天室 $server->push($frame->fd, json_encode(['action' => 'join', 'message' => '加入聊天室成功'])); break; case 'send': // 将消息发送给所有人 foreach ($server->connections as $fd) { $server->push($fd, json_encode(['action' => 'send', 'message' => $data['message']])); } break; default: break; } }); ``` 3. 前端页面实现 最后,需要写一个前端页面来连接 WebSocket 服务器,并实现聊天室功能。代码示例: ``` <html> <head> <title>WebSocket 聊天室</title> </head> <body> <div> <input type="text" id="message" placeholder="请输入消息"> <button id="send">发送</button> </div> <ul id="messages"></ul> <script> var ws = new WebSocket('ws://localhost:9501'); ws.onopen = function(event) { // 连接成功,发送加入房间消息 ws.send(JSON.stringify({'action': 'join'})); }; ws.onmessage = function(event) { var data = JSON.parse(event.data); switch (data.action) { case 'join': // 加入聊天室成功 addMessage('系统消息', '加入聊天室成功'); break; case 'send': // 收到消息 addMessage('其他用户', data.message); break; default: break; } }; document.getElementById('send').addEventListener('click', function() { // 发送消息 var message = document.getElementById('message').value; ws.send(JSON.stringify({'action': 'send', 'message': message})); document.getElementById('message').value = ''; }); function addMessage(user, message) { // 添加消息到列表中 var li = document.createElement('li'); li.innerHTML = '<strong>' + user + '</strong>: ' + message; document.getElementById('messages').appendChild(li); } </script> </body> </html> ``` 以上就是实现 WebSocket 聊天室功能的全部代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值