public CavetubeClient() { this.Connector = new SocketIO(); this.Connector.OnOpen += e => { this.RaiseOnOpen(new CavetubeClientOnOpenEventArgs()); }; this.Connector.OnClose += e => { this.RaiseOnClose(new CavetubeClientOnCloseEventArgs()); }; this.Connector.OnError += e => { this.RaiseOnError(new CavetubeClientOnErrorEventArgs(e.Error)); }; //別スレッドからだとRaisePropertyChangedが動かない。 //WPF4で改善予定 /*this.Connector.OnMessage += e =>*/ Observable.FromEvent<SocketIOOnMessageCallback, SocketIOOnMessageEventArgs>(a => this.Connector.OnMessage += a, a => this.Connector.OnMessage -= a) .ObserveOnDispatcher() .Subscribe(e => { dynamic json = DynamicJson.Parse(e.ReceivedMessage); if (json.mode == "post") { var comment = new CavetubeComment() { Number = (int)json.comment_num, Text = json.message }; var time = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc) .AddMilliseconds(json.time) .AddTicks(TimeZoneInfo.Local.BaseUtcOffset.Ticks); comment.PostDate = time; if (json.auth) { comment.Name = json.name; } this.RaiseOnMessage(new CavetubeClientOnMessageEventArgs(comment)); } }); }
public CavetubeClientOnMessageEventArgs(CavetubeComment newerComment) : base() { this.NewerComment = newerComment; }