Comments (6)
Here's an example of how to do a WebSocket upgrade with Hyper.
https://github.com/krzysztofwos/hyper-websocket-upgrade
I am evaluating tokio-tungstenite
for my next project. The problem that I am experiencing right now is that there seems to be no way to gracefully initiate the closing handshake from the server side with a custom close code and close reason (something that's possible with tungstenite
), because when I get a sink and a stream I no longer have any interface to send a closing frame. Any ideas on how to address this?
from tokio-tungstenite.
Thanks for providing the example for others, unfortunately we did not have time to check the hyper implementation and prepare another example.
As for the closing of the websocket connection -- you're right and we also thought about that. I think that one of the possible solutions may be an addition of close message to the Message
enum, currently the Message
allows you to construct binary and text messages as well as Ping
and Pong
messages, but since Close
message is kind of special, we did not add it do the enum yet. Perhaps it would make sense to add the possibility to send the Close
message as Message::Close(Reason)
.
We actually discussed that once here: #45
But somehow did not get to the point where we had time to do the change (it should probably be rather a small change though).
from tokio-tungstenite.
Yes, I think it would be a fine solution. This is what websocket
crate does.
from tokio-tungstenite.
For the hyper example (original question) I think you can refer to the already mentioned: https://github.com/krzysztofwos/hyper-websocket-upgrade
Would it be sufficient?
As for the possibility to get close errors, it's now merged to master (see #53), so you can use it already. We'll may also release a new version of tungstenite-rs
and tokio-tungstenite
.
from tokio-tungstenite.
https://github.com/krzysztofwos/hyper-websocket-upgrade is a 404 error now, is there any newer example for hyper & tokio-tungstenite?
from tokio-tungstenite.
For those still looking for an alternative, hyper-tungstenite seems like a way to do this.
from tokio-tungstenite.
Related Issues (20)
- WebSocket protocol error: Connection reset without closing handshake.
- Can't disable certificate validation HOT 1
- I want to configure a larger number of concurrent connections for the server. How should I configure it?
- Consider closing stream if reader was dropped HOT 1
- Using a Tor connector from `arti-client` HOT 1
- Add feature to use rustls instead of native-tls HOT 1
- `TcpListener::accept` blocks runtime after accepting a websocket connection HOT 2
- What's Proper way to close a connection after split? HOT 1
- `tokio-tungstenite` + `SkipServerVerification` + `rustls ` seems never works HOT 2
- SendAfterClosing when doing the close handshake in 0.20.1 HOT 4
- Update to tungstenite 0.21 HOT 3
- `rustls-tls-native-roots` does not imply `rustls-tls-native-roots` for `tungstenite` HOT 3
- Passing body in `connect`? HOT 2
- Can we provided a way to keep the original header name case. HOT 1
- 403 Forbidden HOT 1
- "WebSocket protocol error: httparse error: invalid token" when connect from ngrok tcp tunnel. HOT 5
- Is it possible to bind client to specific interface? HOT 1
- 没有连接断开时,直接检测客户端的状态的api,以实现重新连接,这在其它语言中都是常见的
- Performance boost implementing `poll_write_vectored` and rustls 0.23 HOT 2
- Is MaybeTlsStream supposed to work for servers too? 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 tokio-tungstenite.