Fix issue with adding multiple instances of chatserver.
This commit is contained in:
parent
9845fda05c
commit
81c6d276d5
5 changed files with 35 additions and 59 deletions
1
server/.rustfmt.toml
vendored
1
server/.rustfmt.toml
vendored
|
@ -1 +1,2 @@
|
|||
tab_spaces = 2
|
||||
edition="2018"
|
||||
|
|
|
@ -2,11 +2,13 @@ extern crate lemmy_server;
|
|||
#[macro_use]
|
||||
extern crate diesel_migrations;
|
||||
|
||||
use actix::prelude::*;
|
||||
use actix_web::*;
|
||||
use diesel::r2d2::{ConnectionManager, Pool};
|
||||
use diesel::PgConnection;
|
||||
use lemmy_server::routes::{federation, feeds, index, nodeinfo, webfinger, websocket};
|
||||
use lemmy_server::settings::Settings;
|
||||
use lemmy_server::websocket::server::*;
|
||||
use std::io;
|
||||
|
||||
embed_migrations!();
|
||||
|
@ -27,6 +29,9 @@ async fn main() -> io::Result<()> {
|
|||
let conn = pool.get().unwrap();
|
||||
embedded_migrations::run(&conn).unwrap();
|
||||
|
||||
// Set up websocket server
|
||||
let server = ChatServer::startup(pool.clone()).start();
|
||||
|
||||
println!(
|
||||
"Starting http server at {}:{}",
|
||||
settings.bind, settings.port
|
||||
|
@ -37,6 +42,7 @@ async fn main() -> io::Result<()> {
|
|||
App::new()
|
||||
.wrap(middleware::Logger::default())
|
||||
.data(pool.clone())
|
||||
.data(server.clone())
|
||||
// The routes
|
||||
.configure(federation::config)
|
||||
.configure(feeds::config)
|
||||
|
|
|
@ -1,27 +1,12 @@
|
|||
use crate::websocket::server::*;
|
||||
use crate::Settings;
|
||||
use actix::prelude::*;
|
||||
use actix_web::web;
|
||||
use actix_web::*;
|
||||
use actix_web_actors::ws;
|
||||
use diesel::r2d2::{ConnectionManager, Pool};
|
||||
use diesel::PgConnection;
|
||||
use std::time::{Duration, Instant};
|
||||
|
||||
pub fn config(cfg: &mut web::ServiceConfig) {
|
||||
// TODO couldn't figure out how to get this method to recieve the other pool
|
||||
let settings = Settings::get();
|
||||
let manager = ConnectionManager::<PgConnection>::new(&settings.get_database_url());
|
||||
let pool = Pool::builder()
|
||||
.max_size(settings.database.pool_size)
|
||||
.build(manager)
|
||||
.unwrap_or_else(|_| panic!("Error connecting to {}", settings.get_database_url()));
|
||||
|
||||
// Start chat server actor in separate thread
|
||||
let server = ChatServer::startup(pool).start();
|
||||
cfg
|
||||
.data(server)
|
||||
.service(web::resource("/api/v1/ws").to(chat_route));
|
||||
cfg.service(web::resource("/api/v1/ws").to(chat_route));
|
||||
}
|
||||
|
||||
/// How often heartbeat pings are sent
|
||||
|
@ -38,8 +23,7 @@ async fn chat_route(
|
|||
// TODO not sure if the blocking should be here or not
|
||||
ws::start(
|
||||
WSSession {
|
||||
// db: db.get_ref().clone(),
|
||||
cs_addr: chat_server.get_ref().clone(),
|
||||
cs_addr: chat_server.get_ref().to_owned(),
|
||||
id: 0,
|
||||
hb: Instant::now(),
|
||||
ip: req
|
||||
|
|
|
@ -87,21 +87,6 @@ pub struct ChatServer {
|
|||
db: Pool<ConnectionManager<PgConnection>>,
|
||||
}
|
||||
|
||||
// impl Default for ChatServer {
|
||||
// fn default(nah: String) -> ChatServer {
|
||||
// // default room
|
||||
// let rooms = HashMap::new();
|
||||
|
||||
// ChatServer {
|
||||
// sessions: HashMap::new(),
|
||||
// rate_limits: HashMap::new(),
|
||||
// rooms,
|
||||
// rng: rand::thread_rng(),
|
||||
// nah: nah,
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
impl ChatServer {
|
||||
pub fn startup(db: Pool<ConnectionManager<PgConnection>>) -> ChatServer {
|
||||
// default room
|
||||
|
|
Loading…
Reference in a new issue