日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

使用PHP+Swoole实现的网页即时聊天工具:PHPWebIM

發布時間:2023/12/10 php 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用PHP+Swoole实现的网页即时聊天工具:PHPWebIM 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用PHP+Swoole實現的網頁即時聊天工具

全異步非阻塞Server,可以同時支持數百萬TCP連接在線

同時支持websocket+comet2種兼容協議,可用于所有種類的瀏覽器包括IE

擁有完整的UI界面

支持單聊/群聊/組聊等功能

支持發送表情

支持永久保存聊天記錄

基于Server PUSH的即時內容更新,登錄/登出/狀態變更/消息等會內容即時更新

最新的版本已經可以原生支持IE系列瀏覽器了,基于Http長連接

安裝

swoole擴展

pecl install swoole

swoole框架

composer install

運行
將client目錄配置到Nginx/Apache的虛擬主機目錄中,使client/index.html可訪問。修改client/config.js中,IP和端口為對應的配置。

php webim_server.php 詳細部署說明

1.安裝composer(php依賴包工具)

curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer

注意:如果未將php解釋器程序設置為環境變量PATH中,需要設置。因為composer文件第一行為#!/usr/bin/env php,并不能修改。更加詳細的對composer說明:

http://blog.csdn.net/zzulp/article/details/18981029

2.composer install

切換到PHPWebIM項目目錄,執行指令composer install,如很慢則

composer install --prefer-dist

3.Ningx/Apache配置(這里未使用swoole_framework提供的Web AppServer)
nginx

server {listen 80;server_name im.swoole.com;index index.shtml index.html index.htm index.php;root /path/to/PHPWebIM/client;location ~ .*\.(php|php5)?${fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;include fastcgi.conf;}access_log /Library/WebServer/nginx/logs/im.swoole.com access; }

apache

<VirtualHost *:80>DocumentRoot "path/to/PHPWebIM/client"ServerName im.swoole.comAddType application/x-httpd-php .php<Directory />Options Indexes FollowSymLinksAllowOverride NoneRequire all grantedDirectoryIndex index.php</Directory> </VirtualHost>

4.修改配置PHPWebIM/config.php

$config['server'] = array(//監聽的HOST'host' => '0.0.0.0',//監聽的端口'port' => '9503',//WebSocket的URL地址,供瀏覽器使用的'url' => 'ws://127.0.0.1:9503', );

server.host server.port 項為WebIM服務器即WebSocket服務器的IP與端口,其他選擇項根據具體情況修改
server.url對應的就是服務器IP或域名以及websocket服務的端口,這個就是提供給瀏覽器的WebSocket地址
webim.data_dir用于修改聊天記錄存儲的目錄,必須有可寫權限

5.啟動WebSocket服務器

php PHPWebIM/webim_server.php

IE瀏覽器不支持WebSocket,需要使用FlashWebSocket模擬,請修改flash_policy.php中對應的端口,然后啟動flash_policy.php。

php PHPWebIM/flash_policy.php

6.綁定host與訪問聊天窗口(可選)

如果URL直接使用IP:PORT,這里不需要設置。

vi /etc/hosts

增加

127.0.0.1 im.swoole.com

用瀏覽器打開:http://im.swoole.com

快速了解項目架構

1.目錄結構

+ PHPWebIM|- webim_server.php //WebSocket協議服務器|- config.php // swoole運行配置|+ swoole.ini // WebSocket協議實現配置|+ client|+ static|- config.js // WebSocket client配置|- index.html // 登錄界面|- main.html // 聊天室主界面|+ data // 運行數據|+ log // swoole日志及WebIM日志|+ src // WebIM 類文件儲存目錄|+ Store|- File.php // 默認用內存tmpfs文件系統(linux /dev/shm)存放天著數據,如果不是linux請手動修改$shm_dir|- Redis.php // 將聊天數據存放到Redis|- Server.php // 繼承實現WebSocket的類,完成某些業務功能|+ vendor // 依賴包目錄

2.Socket Server與Socket Client通信數據格式

如:登錄
Client發送數據

{"cmd":"login","name":"xdy","avatar":"http://tp3.sinaimg.cn/1586005914/50/5649388281/1"}

Server響應登錄

{"cmd":"login", "fd": "31", "name":"xdy","avatar":"http://tp3.sinaimg.cn/1586005914/50/5649388281/1"}

可以看到cmd屬性,client與server發送時數據都有指定,主要是用于client或者server的回調處理函數。

3.需要理清的幾種協議或者服務的關系

http協議:超文本傳輸協議。單工通信,等著客戶端請求之后響應。

WebSocket協議:是HTML5一種新的協議,它是實現了瀏覽器與服務器全雙工通信。服務器端口與客戶端都可以推拉數據。

Web服務器:此項目中可以用基于Swoole的App Server充當Web服務器,也可以用傳統的nginx/apache作為web服務器

Socket服務器:此項目中瀏覽器的WebSocket客戶端連接的服務器,swoole_framework中有實現WebSocket協議PHP版本的服務器。

WebSocket Client:實現html5的瀏覽器都支持WebSocket對象,如不支持此項目中有提供flash版本的實現。

項目主頁:http://www.open-open.com/lib/view/home/1416465136852
摘抄自:http://www.cnblogs.com/ylcms/p/7252134.html

總結

以上是生活随笔為你收集整理的使用PHP+Swoole实现的网页即时聊天工具:PHPWebIM的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。