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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

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

發(fā)布時(shí)間:2023/12/10 php 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP+Swoole实现的网页即时聊天通讯工具:PHPWebIM 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

PHP+Swoole實(shí)現(xiàn)的網(wǎng)頁(yè)即時(shí)聊天工具:PHPWebIM

  • 全異步非阻塞Server,可以同時(shí)支持?jǐn)?shù)百萬(wàn)TCP連接在線

  • 同時(shí)支持websocket+comet2種兼容協(xié)議,可用于所有種類的瀏覽器包括IE

  • 擁有完整的UI界面

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

  • 支持發(fā)送表情

  • 支持永久保存聊天記錄

  • 基于Server PUSH的即時(shí)內(nèi)容更新,登錄/登出/狀態(tài)變更/消息等會(huì)內(nèi)容即時(shí)更新

    最新的版本已經(jīng)可以原生支持IE系列瀏覽器了,基于Http長(zhǎng)連接

    安裝

    swoole擴(kuò)展

    pecl install swoole

    swoole框架

    composer install

    運(yùn)行

    將client目錄配置到Nginx/Apache的虛擬主機(jī)目錄中,使client/index.html可訪問。修改client/config.js中,IP和端口為對(duì)應(yīng)的配置。

    php webim_server.php

    詳細(xì)部署說明

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

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

    注意:如果未將php解釋器程序設(shè)置為環(huán)境變量PATH中,需要設(shè)置。因?yàn)閏omposer文件第一行為#!/usr/bin/env php,并不能修改。更加詳細(xì)的對(duì)composer說明參考:http://blog.csdn.net/zzulp/article/details/18981029

    2.composer install

    切換到PHPWebIM項(xiàng)目目錄,執(zhí)行指令composer install,如很慢則

    composer install --prefer-dist

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

    nginx

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    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

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    <VirtualHost *:80>

    ????DocumentRoot "path/to/PHPWebIM/client"

    ????ServerName im.swoole.com

    ????AddType application/x-httpd-php?.php

    ????<Directory />

    ????????Options Indexes FollowSymLinks

    ????????AllowOverride None

    ????????Require all granted

    ????????DirectoryIndex index.php

    ????</Directory>

    </VirtualHost>

    4.修改配置PHPWebIM/config.php

    1

    2

    3

    4

    5

    6

    7

    8

    $config['server'] = array(

    ????//監(jiān)聽的HOST

    ????'host'?=> '0.0.0.0',

    ????//監(jiān)聽的端口

    ????'port'?=> '9503',

    ????//WebSocket的URL地址,供瀏覽器使用的

    ????'url'?=> 'ws://127.0.0.1:9503',

    );

    • server.host server.port 項(xiàng)為WebIM服務(wù)器即WebSocket服務(wù)器的IP與端口,其他選擇項(xiàng)根據(jù)具體情況修改
    • server.url對(duì)應(yīng)的就是服務(wù)器IP或域名以及websocket服務(wù)的端口,這個(gè)就是提供給瀏覽器的WebSocket地址
    • webim.data_dir用于修改聊天記錄存儲(chǔ)的目錄,必須有可寫權(quán)限

    5.啟動(dòng)WebSocket服務(wù)器

    php PHPWebIM/webim_server.php

    IE瀏覽器不支持WebSocket,需要使用FlashWebSocket模擬,請(qǐng)修改flash_policy.php中對(duì)應(yīng)的端口,然后啟動(dòng)flash_policy.php。

    php PHPWebIM/flash_policy.php

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

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

    vi /etc/hosts

    增加

    127.0.0.1 im.swoole.com

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

    快速了解項(xiàng)目架構(gòu)

    1.目錄結(jié)構(gòu)

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

    2.Socket Server與Socket Client通信數(shù)據(jù)格式

    如:登錄

    Client發(fā)送數(shù)據(jù)

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

    Server響應(yīng)登錄

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

    可以看到cmd屬性,client與server發(fā)送時(shí)數(shù)據(jù)都有指定,主要是用于client或者server的回調(diào)處理函數(shù)。

    3.需要理清的幾種協(xié)議或者服務(wù)的關(guān)系

    http協(xié)議:超文本傳輸協(xié)議。單工通信,等著客戶端請(qǐng)求之后響應(yīng)。

    WebSocket協(xié)議:是HTML5一種新的協(xié)議,它是實(shí)現(xiàn)了瀏覽器與服務(wù)器全雙工通信。服務(wù)器端口與客戶端都可以推拉數(shù)據(jù)。

    Web服務(wù)器:此項(xiàng)目中可以用基于Swoole的App Server充當(dāng)Web服務(wù)器,也可以用傳統(tǒng)的nginx/apache作為web服務(wù)器

    Socket服務(wù)器:此項(xiàng)目中瀏覽器的WebSocket客戶端連接的服務(wù)器,swoole_framework中有實(shí)現(xiàn)WebSocket協(xié)議PHP版本的服務(wù)器。

    WebSocket Client:實(shí)現(xiàn)html5的瀏覽器都支持WebSocket對(duì)象,如不支持此項(xiàng)目中有提供flash版本的實(shí)現(xiàn)。

項(xiàng)目主頁(yè):https://github.com/matyhtf/webim

部分來(lái)自:www.ruanally.com

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。