イベントをObservableにしたソケットラッパーをNugetで公開しました
ソケットのイベントをObservableにしただけ的な俺得ライブラリをNugetに上げることができました
名前はRxSocketで完全に名前負けしてます
期待した人ごめんなさい
名前はどうしたらよかったんですかねぇ
RxSocketって名前は既に使われていたみたい(検索結果に出てこないけど)なので、Punio.RxSocketです
ほんと名前・・
ソースはこちら
使い方
RxTcpClient
var client = new RxTcpClient(); // Subscribe client.Error.Subscribe(); client.Closed.Subscribe(); client.Received.Subscribe(); // Connect try{ client.Connect("127.0.0.1",10000); }catch(Excepction){}
TCPで接続するクライアントです
購読可能なイベントは、Error,Close,Receiveです
いつ来るのかはまぁ見た通りですね
接続は同期メソッドで失敗時は例外吐きます
今までの経験でいうとソケット通信のエラーの90%以上は接続で起きている気がします。 んで、エラー起きたときはまぁ少し待って再接続ですよね。 そういう感じの処理を書くときは同期呼び出しで失敗したらWinSockの例外拾うってのが私は使いやすいんで、こんな感じです。 (こういうところをちゃんと作れると少しは名前に追いつけそうですけどね)
IPv6やDSN名でもつながるはずです(DNSは試してないです)
RxTcpServer
var server = new RxTcpServer(); // Subscribe server.Error.Subscribe(); server.Accepted.Subscribe(); // client connected server.Closed.Subscribe(); // client closed server.Received.Subscribe(); // Listen try{ server.Listen(IPAddress.Any.ToString(),10000); }catch(Exception){}
TCPのサーバーです
クライアントの接続、切断イベントが購読できるところがサーバーソケットですね
こちらもListenは同期で失敗時に例外吐きます。「そのポート使われてるよ!」ってのが一番多い例外じゃないでしょうか。
こちらもListenに渡すアドレスでIPv4/6を判断するはずです
RxUdpListener
var listener = new RxUdpListener(); // Subscribe listener.Received.Subscribe(); // Listen try{ listener.Listen(10000); // UNICAST // or // listener.Listen("224.0.0.1",10000); // MULTICAST }catch(Exception){}
UDPのデータを受信する人です
Listenにアドレスを指定するとマルチキャストと判断してJOINします(マルチキャストのテストできる環境がないので実際に受信できるのか未確認)
こんな感じ
ソケット通信処理はつながったらあとは受信イベントを待つだけ、って感じなのが多いのでそれ用ですね。githubにはテスト用アプリも入っているのでそちらもみてみてみてください。
イベントをObservableにしたソケットラッパーを作りました
YouTubeのアカウントが停止されて復活した話
FF15をやるためにPS4 Proを買いました
去年の11月のことです
ウホッ pic.twitter.com/P0d2CBRieL
— ぷにお (@vl_o_lv) 2016年11月29日
PS4を買ったらやりたかったのがゲーム動画のShare機能でプレイ動画がLive配信できるやつ
見てほしい人がいるわけでもなくとりあえず配信してました
クリア
FF15クリアしてエンディングまで配信したのがこれです
エンディングの一部はソフトから制限がかかって配信できないようになっています(ネタバレ対策というより曲の著作権っぽい制限?)
ということでメーカー側が嫌がるようなことは何もせず(別途キャプチャソフトとか使って上記制限期間を配信したわけでもなく)ゲームはクリアしました
翌日
クリアしてもまだまだやっていない要素が残っているので、翌日も配信をしようとしたらエラーでできませんでした
その翌日にはGoogleから意味不明なメールがやってきました
メールにあるようにアカウントにログインしたのでこの件はこれで終了したものだと思っていました
その後も何度やってもLive配信はできませんでした
翌年
年が明けても配信できないので少しググってみるとFF15配信者の垢BANとか出てきてました
ブラウザでYouTubeにログインしたところ私のアカウントも見事に凍結状態でした(普段YouTube使わないので・・)
この前のGoogleからのメールはこれだったんですね
このメールにあるお問い合わせページ
My account is disabled - Accounts Help
に「PS4でFF15配信してただけなのになぜ?」って日本語で書いて終了
もともと配信機能があるから配信してただけなのでそれ以来すっかり忘れてました
本日
Googleからメールがきてました
アカウントが復活しました
なんだかなー