webim
webim copied to clipboard
使用PHP+Swoole实现的网页即时聊天工具
WebIM
使ç¨PHP
+Swoole4
å®ç°çç½é¡µå³æ¶è天工å
·ï¼å¨çº¿ä½éªå°åï¼http://webim.swoole.com/
- åºäº
Swoole4
åç¨å®ç°ï¼å¯ä»¥åæ¶æ¯ææ°ç¾ä¸TCP
è¿æ¥å¨çº¿ - åºäº
WebSocket
+Http Comet
æ¯ææææµè§å¨/客æ·ç«¯/移å¨ç«¯ - æ¯æåè/群è/ç»èçåè½
- è天记å½ä½¿ç¨
MySQL
åå¨ - ç¨æ·å表åå¨çº¿ä¿¡æ¯ä½¿ç¨
Redis
åå¨ - åºäº
Server PUSH
çå³æ¶å 容æ´æ°ï¼ç»å½/ç»åº/ç¶æåæ´/æ¶æ¯çä¼å 容å³æ¶æ´æ° - æ¯æåéé¾æ¥/å¾ç/è¯é³/è§é¢/æ件ï¼å¼åä¸ï¼
- æ¯æ
Web
端ç´æ¥ç®¡çææå¨çº¿ç¨æ·å群ç»ï¼å¼åä¸ï¼
ä¾èµ
éè¦Swoole-4.4.7
ææ´é«çæ¬
pecl install swoole
é¨ç½²è¯´æ
å®è£ ä¾èµç Composer å
composer install
ä¿®æ¹é ç½®
- é
ç½®
configs/redis.php
ä¸çRedis
æå¡å¨ä¿¡æ¯ï¼ç¨æ·å表åä¿¡æ¯ä¼åå°Redis
ä¸ - é
ç½®
configs/db.php
ä¸æ°æ®åºä¿¡æ¯ï¼è天记å½ä¼åå¨å°MySQL
ä¸ - 导å
¥
MySQL
表æ¥å£å°å¯¹åºçæ°æ®åºä¸
表ç»æ
CREATE TABLE `webim_history` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`name` varchar(64) COLLATE utf8mb4_bin NOT NULL,
`avatar` varchar(255) COLLATE utf8mb4_bin NOT NULL,
`type` varchar(12) COLLATE utf8mb4_bin NOT NULL,
`msg` text COLLATE utf8mb4_bin NOT NULL,
`send_ip` varchar(20) COLLATE utf8mb4_bin NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
- ä¿®æ¹
configs/webim.php
ä¸çé项ï¼è®¾ç½®æå¡å¨çURLå端å£
$config['server'] = array(
//çå¬çHOST
'host' => '0.0.0.0',
//çå¬ç端å£
'port' => '9503',
//é
ç½®åå [å¯é]
'name' => 'im.swoole.com',
);
-
server.host
ï¼server.port
项为WebIM
æå¡å¨å³WebSocket
æå¡å¨çå°åä¸ç«¯å£ -
server.name
é 置使ç¨çååï¼å¯éï¼ï¼å¦ææªè®¾ç½®å°ç´æ¥ä½¿ç¨IP:PORT
è¿è¡è®¿é® - çå¬
80
å443
ç1024
以å 端å£éè¦root
æé
å¯å¨æå¡å¨
php server.php
é ç½®åå解ææè æ¬å° Host [å¯é]
- ç´æ¥ä½¿ç¨
IP:PORT
ï¼è¿éä¸éè¦è®¾ç½®ãç´æ¥æå¼http://IP:PORT/
å³å¯ - å¤ç½ååéè¦é
ç½®
DNS
解æ - æ¬æºååéè¦ä¿®æ¹
/etc/hosts
ï¼å¢å127.0.0.1 im.swoole.com
æ¬æºååç»å®
é
ç½®æååï¼å¯ä»¥ä½¿ç¨æµè§å¨æå¼ï¼å¦ï¼http://im.swoole.com:9503/
以ä¸ä» 为示ä¾ï¼å®é 项ç®éè¦ä¿®æ¹ä¸ºå¯¹åºçåå