RustでWebsocketを使ってみる。
最終的にはRaspberryPiを使ってビデオチャット機器を作りたい.
調査
-
pipeをweb socketにつなぐコマンドをRustで書いてみた - Qiita 2018年10月10日に更新
クライアントアプリケーション. stdを介してWSサーバーとの会話を実現している. -
RustでWebrtcのSignalingServerの実装 - Qiita 2017年12月01日に更新
単純なSignalingServerの実装から、片方向のストリーミングサーバーの実装が参考になる.
websocketモジュール
wsを使用する.
[dependence]
ws = "*"
echo サーバー/クライアント
server.rs
use ws::listen;
fn main(){
println!("Runnig Serer");
listen("127.0.0.1:3012", |out| {
move |msg| {
let response: String = format!("{} - {}", msg, "Im server.".to_string());
println!("{}", response);
out.send(response)
}
}).unwrap()
}
client.rs
use ws::{connect, CloseCode};
fn main(){
connect("ws://127.0.0.1:3012", |out| {
out.send("Hello WebSocket").unwrap();
move |msg| {
println!("Got message: {}", msg);
out.close(CloseCode::Normal)
}
}).unwrap()
}
実行:
$ cargo run --bin server
Runnig Serer
$ cargo run --bin client
Got message: Hello WebSocket - Im server.
無事, クライアントから送ったメッセージがechoされている.
echo サーバーを実装できた。
今後
- BroadCastを実装
- WebRTCについて調査
- 映像+音声データの送受信
- ブラウザWebRTCで実現している機能を、ブラウザなしのRustで実装する.
以上