基于muduo网络库的集群服务器,可以实现跨服务器的聊天功能
支持接入chatGPT/Claude/Sage和机器人对话
- 基于muduo网络库的ThreadPool Reactor
- 基于json序列化与反序列化的消息收发协议
- 基于mysql设计聊天服务器的数据库
- 基于nginx实现tcp负载均衡
- 基于redis实现服务器间通信
- 基于Quora's Poe逆向工程,向POE发送HTTP请求,实现用户与机器人的对话
ubuntu 18.04
mysql
sudo apt install mysql-server
sudo apt-get install mysql-server
sudo apt-get install libmysqlclient-dev
mysql -u root -p
set character_set_server=utf8;
create database chat;
use chat;
source ./thirdparty/chat.sql;sudo apt-get install libpcre3 libpcre3-dev
./configure --with-stream
sudo make
sudo make install
sudo gedit /usr/local/nginx/conf/nginx.confadd these
# nginx tcp load balance config
stream {
upstream MyServer {
server 127.0.0.1:6000 weight=1 max_fails=3 fail_timeout=30s;
server 127.0.0.1:6002 weight=1 max_fails=3 fail_timeout=30s;
}
server {
proxy_connect_timeout 1s;
# proxy_timeout 3s;
listen 8000;
proxy_pass MyServer;
tcp_nodelay on;
}
}
cd /usr/local/nginx/sbin
sudo ./nginxredis 4.0.9 && guide
sudo apt-get install redis-server
mkdir /etc/redis
cd /etc/redis
sudo cp /usr/local/redis/redis.conf .
sudo gedit redis.conf
# find "daemonize no"
# change it into "daemonize yes"
redis-server /etc/redis/redis.confmake
sudo make install
sudo ldconfig /usr/local/libpip install poe-api# make the project
cd chat_server
mkdir build
cd build
cmake ..
make
# make sure nginx and redis are running
sudo ./nginx
redis-server /etc/redis/redis.conf
# start the chat servers
cd ../bin
./server 127.0.0.1 6000
# new terminal
./server 127.0.0.1 6002
# start chat robot server
cd ../python
python botserver.py
# start clients
cd ../bin
./client 127.0.0.1 8000
# new terminal
./client 127.0.0.1 8000

