-
Hey guy i have issue about send between client (node js) by use node and server use rust, and i want to emit message via redis pub but i didn't know how? because socketioxide have encode message server use axum::routing::get;
use socketioxide::{
adapter::Adapter,
extract::{Data, SocketRef},
SocketIo
};
use tracing::info;
use tracing_subscriber::FmtSubscriber;
use socketioxide_redis::{drivers::redis::redis_client as redis, RedisAdapter, RedisAdapterConfig, RedisAdapterCtr};
async fn on_connect<A: Adapter>(socket: SocketRef<A>) {
socket.on("on_message", on_event);
let _ = socket.broadcast().emit("hello", "world").await.ok();
}
async fn on_event<A: Adapter>(socket: SocketRef<A>, Data(data): Data<String>) {
println!("{:?}", data);
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
tracing::subscriber::set_global_default(FmtSubscriber::default())?;
let client = redis::Client::open("redis://127.0.0.1:6379?protocol=resp3")?;
let adapter = RedisAdapterCtr::new_with_redis(&client).await?;
let (layer, io) = SocketIo::builder()
.with_adapter::<RedisAdapter<_>>(adapter)
.build_layer();
io.ns("/", on_connect).await?;
// io.ns("/", on_connect);
let app = axum::Router::new()
.route("/", get(|| async { "Hello, World!" }))
.layer(layer);
info!("Starting server");
let listener = tokio::net::TcpListener::bind("0.0.0.0:3003").await.unwrap();
axum::serve(listener, app).await.unwrap();
Ok(())
} client const { Emitter } = require('@socket.io/redis-emitter');
const { createClient } = require("redis");
const createClientRedis = async () => {
let client = createClient({
socket: {
host: "127.0.0.1",
port: 6379
},
})
await client.connect()
return client
}
async function main() {
let socket = new Emitter(await createClientRedis(), {
key: "socket.io-request"
})
socket.emit("on_message", "Hello");
console.log("Hello World");
}
main(); |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 2 replies
-
Hey, |
Beta Was this translation helpful? Give feedback.
-
You can now use socketioxide-emitter as an alternative to |
Beta Was this translation helpful? Give feedback.
You can now use socketioxide-emitter as an alternative to
@socket.io/redis-emitter
.