public UniRx.IObservable <Websocket> Connection(Config config) { return(UniRx.Observable.Create <Websocket> (observer => { var impl = new WebSocketSharp.WebSocket(config.url.ToString(), config.protocols); System.EventHandler <WebSocketSharp.ErrorEventArgs> onError = (obj, e) => { observer.OnError(new System.Exception(e.Message)); }; impl.OnError += onError; foreach (var pr in config.coockie) { impl.SetCookie(new WebSocketSharp.Net.Cookie(pr.Key, pr.Value)); } var socket = new Websocket(impl, shared_data); impl.OnOpen += (sender, e) => { impl.OnError -= onError; this.shared_data.connected.Add(socket.GetHashCode(), socket); observer.OnNext(socket); observer.OnCompleted(); }; impl.ConnectAsync(); return new Sas.DisposeAction(() => { }); })); }