woann-chat
是一個(gè)基于LaravelS和Layim編寫的聊天系統(tǒng)。
項(xiàng)目地址:https://github.com/woann/chat
演示地址:http://chat.woann.cn (測試賬號同安裝中的測試賬號同步)
依賴 | 說明 |
---|---|
PHP |
>= 7.2 推薦7.2
|
Swoole |
>= 4.2.9 從2.0.12開始不再支持PHP5 推薦4.2.9+
|
LaravelS | >=3.3.9 LaravelS是一個(gè)將swoole和laravel框架結(jié)合起來的膠水工具 |
聲明
- 此項(xiàng)目是基于LaravelS作為服務(wù)端游桩,所以在此之前初橘,你要熟悉swoole、laravel幢炸、還有將他們完美結(jié)合的
LaravelS
https://github.com/hhxsv5/laravel-s - 前端部分是采用layui,在此鄭重說明泄隔,layui中的im部分
layim
并不開源,僅供交流學(xué)習(xí)阳懂,請勿將此項(xiàng)目中的layim用作商業(yè)用途梅尤。 - 此項(xiàng)目持續(xù)開發(fā)中,歡迎有興趣的朋友共同維護(hù)
功能列表
- 登錄 | 沒什么好說的...
- 注冊 | 注冊過程中為用戶分配了一個(gè)默認(rèn)分組岩调,并將用戶添加到所有人都在的一個(gè)群(10001)
- 查找-添加好友 | 可以根據(jù)用戶名、昵稱赡盘、id來查找号枕,不輸入內(nèi)容則查找所有用戶,點(diǎn)擊發(fā)起好友申請
- 查找-加入群 | 可根據(jù)群昵稱陨享、群id查找群聊葱淳,點(diǎn)擊加入
- 創(chuàng)建群 | 創(chuàng)建一個(gè)群聊
- 消息盒子 | 用來接受好友請求和同意或拒絕好友請求的系統(tǒng)消息
- 個(gè)性簽名 | 并沒有什么卵用的功能
- 一對一聊天 | 可發(fā)送文字、表情抛姑、圖片赞厕、文件、代碼等
- 群聊 | 新成員加入群聊時(shí)定硝,如果此刻你正開啟著該群對話框皿桑,將收到新人入群通知
- 查看群成員
- 臨時(shí)會話 | 在群成員中,點(diǎn)擊群成員頭像即可發(fā)起臨時(shí)會話
- 歷史記錄 | 聊天面板只顯示20條記錄蔬啡,更多記錄點(diǎn)擊
聊天記錄
查看 - 離線消息 | 對方不在線的時(shí)候诲侮,向?qū)Ψ桨l(fā)起好友請求或者消息,將在對方上線后第一時(shí)間推送
- 換膚 | 這個(gè)是layim自帶的東西箱蟆。沟绪。
- ...
安裝
- 執(zhí)行安裝命令
git clone https://github.com/woann/chat
將項(xiàng)目克隆到本地 - 導(dǎo)入sql,項(xiàng)目根目錄下有個(gè)
woann_chat.sql
文件空猜,將該sql文件導(dǎo)入數(shù)據(jù)庫即可 - 修改
.env
文件绽慈,按照你的數(shù)據(jù)庫賬號密碼進(jìn)行配置 - 運(yùn)行l(wèi)aravelS
php bin/laravels start
- 此時(shí)訪問
127.0.0.1:9501
即可進(jìn)入登錄頁面 - 測試賬號
test01
-test04
密碼全是123456
,當(dāng)然你也可以自行注冊辈毯。
配合nginx使用
- nginx配置文件
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream laravels {
# 通過 IP:Port 連接
server 127.0.0.1:9501 weight=5 max_fails=3 fail_timeout=30s;
# 通過 UnixSocket Stream 連接坝疼,小訣竅:將socket文件放在/dev/shm目錄下,可獲得更好的性能
#server unix:/xxxpath/laravel-s-test/storage/laravels.sock weight=5 max_fails=3 fail_timeout=30s;
#server 192.168.1.1:5200 weight=3 max_fails=3 fail_timeout=30s;
#server 192.168.1.2:5200 backup;
keepalive 16;
}
server {
listen 80;
# 別忘了綁Host喲
server_name xxx.com;#在這里配置域名
root /xxx/woann-chat/public;#在這里配置文件目錄
access_log /yyypath/log/nginx/$server_name.access.log;
autoindex off;
index index.html index.htm;
# Nginx處理靜態(tài)資源(建議開啟gzip)漓摩,LaravelS處理動(dòng)態(tài)資源裙士。
location / {
try_files $uri @laravels;
}
# 當(dāng)請求PHP文件時(shí)直接響應(yīng)404,防止暴露public/*.php
#location ~* \.php$ {
# return 404;
#}
# Http和WebSocket共存管毙,Nginx通過location區(qū)分
# !!! WebSocket連接時(shí)路徑為/ws
# Javascript: var ws = new WebSocket("ws://xxx.com/ws");
location =/ws {
# proxy_connect_timeout 60s;
# proxy_send_timeout 60s;
# proxy_read_timeout:如果60秒內(nèi)被代理的服務(wù)器沒有響應(yīng)數(shù)據(jù)給Nginx腿椎,那么Nginx會關(guān)閉當(dāng)前連接桌硫;同時(shí),Swoole的心跳設(shè)置也會影響連接的關(guān)閉
# proxy_read_timeout 60s;
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header Scheme $scheme;
proxy_set_header Server-Protocol $server_protocol;
proxy_set_header Server-Name $server_name;
proxy_set_header Server-Addr $server_addr;
proxy_set_header Server-Port $server_port;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_pass http://laravels;
}
location @laravels {
# proxy_connect_timeout 60s;
# proxy_send_timeout 60s;
# proxy_read_timeout 60s;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header Scheme $scheme;
proxy_set_header Server-Protocol $server_protocol;
proxy_set_header Server-Name $server_name;
proxy_set_header Server-Addr $server_addr;
proxy_set_header Server-Port $server_port;
proxy_pass http://laravels;
}
}
- 將
resources/view/index.blade.php
文件中簡歷websocket中的
socket = new WebSocket('ws://127.0.0.1:9501?sessionid={{ $sessionid }}');
替換成
socket = new WebSocket('ws://xxx.com/ws?sessionid={{ $sessionid }}');
待完成
- 后臺管理
- ...
部分截圖
-
主界面
-
收到消息
-
聊天界面
-
添加好友
-
加入群
-
同意添加
-
群聊
-
消息盒子
-
聊天記錄