From f5f813dcab59e3bbc4a428bcc869848a5b78fe5c Mon Sep 17 00:00:00 2001 From: Mike Dilger Date: Thu, 15 Feb 2024 11:25:44 +1300 Subject: [PATCH] WebSocketService to remember subscriptions and have a memory scratch buffer --- src/main.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index 317a700..a9618c9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,11 +16,13 @@ use crate::globals::GLOBALS; use crate::reply::NostrReply; use crate::store::Store; use crate::tls::MaybeTlsStream; +use crate::types::OwnedFilter; use futures::{sink::SinkExt, stream::StreamExt}; use hyper::service::Service; use hyper::upgrade::Upgraded; use hyper::{Body, Request, Response}; use hyper_tungstenite::{tungstenite, WebSocketStream}; +use std::collections::HashMap; use std::env; use std::error::Error as StdError; use std::fs::OpenOptions; @@ -159,7 +161,13 @@ async fn handle_http_request( log::info!("{}: websocket started", peer); // Build a websocket service - let mut ws_service = WebSocketService { peer, websocket }; + let mut ws_service = WebSocketService { + peer, + subscriptions: HashMap::new(), + // We start with a 1-page buffer, and grow it if needed. + buffer: vec![0; 4096], + websocket, + }; // Handle the websocket if let Err(e) = ws_service.handle_websocket_stream().await { @@ -197,6 +205,8 @@ async fn handle_http_request( struct WebSocketService { pub peer: SocketAddr, + pub subscriptions: HashMap>, + pub buffer: Vec, pub websocket: WebSocketStream, }