[COMMIT seastar master] websocket: update websocket demo

3 views
Skip to first unread message

Commit Bot

<bot@cloudius-systems.com>
unread,
Jun 23, 2022, 8:25:53 AM6/23/22
to seastar-dev@googlegroups.com, kozakusek
From: kozakusek <bk41...@students.mimuw.edu.pl>
Committer: Piotr Sarna <sa...@scylladb.com>
Branch: master

websocket: update websocket demo

The WebSocket server demo now acts as an echo server,
which returns whatever data it receives on given port.

---
diff --git a/demos/websocket_demo.cc b/demos/websocket_demo.cc
--- a/demos/websocket_demo.cc
+++ b/demos/websocket_demo.cc
@@ -36,11 +36,25 @@ int main(int argc, char** argv) {
seastar::app_template app;
app.run(argc, argv, [] () -> seastar::future<> {
return async([] {
- websocket::server ws;
- ws.register_handler("echo", [] (temporary_buffer<char> &&buf, output_stream<char> &write_buf) {
- return write_buf.write(std::move(buf));
+ static websocket::server ws;
+ ws.register_handler("echo", [] (input_stream<char>& in,
+ output_stream<char>& out) {
+ return repeat([&in, &out]() {
+ return in.read().then([&out](temporary_buffer<char> f) {
+ std::cerr << "f.size(): " << f.size() << "\n";
+ if (f.empty()) {
+ return make_ready_future<stop_iteration>(stop_iteration::yes);
+ } else {
+ return out.write(std::move(f)).then([&out]() {
+ return out.flush().then([] {
+ return make_ready_future<stop_iteration>(stop_iteration::no);
+ });
+ });
+ }
+ });
+ });
});
- auto d = defer([&ws] () noexcept {
+ auto d = defer([] () noexcept {
ws.stop().get();
});
ws.listen(socket_address(ipv4_addr("127.0.0.1", 8123)));
Reply all
Reply to author
Forward
0 new messages