Comments (4)
it works. Not sure why the first time I tried it showed error.
Probably having cookies() as a function will help. But for now I'm good.
from socketioxide.
You can access any header made for your request by using req_parts()
on your SocketRef
. Because I didn't exported the Socket struct. The doc of Socket is missing on doc.rs :/
E.g. :
io.ns("/", |s: SocketRef, Data::<Value>(data)| {
let cookies = socket.req_parts().headers.get(http::headers::COOKIE); // Comma separated list of cookies
info!("Received: {:?}", data);
s.emit("welcome", data).ok();
});
from socketioxide.
I was able to access via let cookie= &socket.req_parts().headers.get("cookie");
. Probably worth having .cookies
so we don't need to parse it manually?
How do I write async code to validate the user token given I cannot pass async functions.
async fn on_connect(socket: SocketRef, Data(data): Data<Value>) {
let cookie= &socket.req_parts().headers.get("cookie").unwrap_or_default();
if validate_user(cookie).await? {
}
}
from socketioxide.
You should be able to put async function as handler like this :
async fn test(s: SocketRef) {
}
io.ns("/", test);
socket.on(
"message",
|socket: SocketRef, Data::<Value>(data), Bin(bin)| async move {
info!("Received event: {:?} {:?}", data, bin);
socket.bin(bin).emit("message-back", data).ok();
},
);
For the .cookie part, it would only be an alias of that socket.req_parts().headers.get("cookie")
because it would be useless to parse cookies for the case where they are not used. But that might be a good idea to add this alias
from socketioxide.
Related Issues (20)
- Inconsistent binary packet ordering HOT 3
- Automatic crate publishing
- Custom parser support HOT 2
- Feature reqwest: List all rooms HOT 1
- Using TLS to encrypt all messages HOT 2
- WebTransport support HOT 1
- Socket-io client does not upgrade to Websocket, it just works as polling HOT 3
- Add middlewares services to namespaces
- All events get blocked when socket is emitting lots of data HOT 14
- Several handlers for a single event HOT 2
- Binary packet placeholder handling does not handle all possible messages
- Relationship between `Bin` and the structure of `Data` can be ambiguous for binary packets HOT 14
- Binary events sent to handlers have a 0x4 byte prepended to the binary data (v4 server) HOT 2
- `OPTIONS` request should not return `BadHandshakeMethod` error HOT 1
- Add default event "connection" HOT 1
- Cannot keep ref to extension objects across .await points in handlers/middlewares HOT 3
- delete_ns blocks thread indefinitely HOT 1
- MongoDB Adpter HOT 1
- Hold a per `Client` state rather than a static state. HOT 1
- Unnecessary panic on Message enum match arms HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from socketioxide.