# Emit a message with volatile behavior
When set, the emitted event may be dropped if the client is not ready to receive it
(e.g. the connection is buffering or not connected). This is useful for events
that are not critical, such as position updates in a game.
Because volatile events use a separate channel that bypasses the main
mpsc buffer, they may arrive **out of order** relative to regular events
emitted around the same time. Only use volatile when ordering relative to
regular events is not important.
See [socket.io volatile events](https://socket.io/docs/v4/emitting-events/#volatile-events).
<div class="warning">
The volatile operator wont have any effect if you use it with <code>emit_with_ack()</code>.
</div>
# Example
```rust
# use socketioxide::{SocketIo, extract::*};
# use serde::Serialize;
#[derive(Serialize)]
struct GameState { x: f64, y: f64 }
let (_, io) = SocketIo::new_svc();
socket.volatile().emit("position", &GameState { x: 1.0, y: 2.0 }).ok();
// Volatile broadcast to a room
socket.volatile().to("game_room").emit("update", &42).await.ok();
// Same than without volatile.
socket.volatile().to("game_room").emit_with_ack::<_, ()>("update", &42).await.ok();
});
```