【问题标题】:Websocket-sharp not raising OnOpen event upon opening websocketWebsocket-sharp 在打开 websocket 时不会引发 OnOpen 事件
【发布时间】:2017-07-27 23:13:52
【问题描述】:

我正处于编写与 IP 摄像机接口的程序的早期阶段。我昨天写的一些代码有效,但是当我今天早上回到它时却没有。我知道,我可能做了一些事情,但据我所知,当我在离开前单击调试时它起作用了,而当我进来时单击调试时却没有。我什至让我的计算机在 VS 上运行了一夜(我几乎从来没有,从那以后我又重新开始了)所以我可以在我离开它们时和我所有的互联网标签。电脑被锁住了,所以除非某个非常机智的人决定惹我,否则一夜之间什么都没有改变。

我正在使用 websocket-sharp,当我连接到 websocket(这似乎确实成功)时,不会引发 OnOpen 事件。

websocket-sharp 引发事件的位在以下几行中。

private void open ()
{
  _inMessage = true;
  startReceiving ();
  try {
    OnOpen.Emit (this, EventArgs.Empty);
  }
  catch (Exception ex) {
    _logger.Error (ex.ToString ());
    error ("An error has occurred during the OnOpen event.", ex);
  }

它到达 OnOpen.Emit,并没有抛出异常,所以它似乎认为它正在引发事件。事件如下所示

public event EventHandler OnOpen;

它似乎没有到达这一行,因为当我在那里放置断点时它没有暂停。我以前从未使用过 .Emit 引发事件的方式,也没有在研究中发现太多,所以那里可能出了问题?

我的代码如下。

public Form1()
    {
        InitializeComponent();
        this.Shown += MainWindow_Loaded;
    }

    void MainWindow_Loaded(object sender, EventArgs e)
    {

        using (var ws = new WebSocket("ws://169.254.101.183"))
        {
            ws.OnMessage += (sender2, e2) =>
                textBox1.Text = e2.Data.ToString();

            ws.Connect();
            ws.OnOpen += (sender2,e2) =>
                textBox1.Text = "connected";

            /*ws.OnError += (sender2, e2) =>
                textBox1.Text = e2.Message;*/

            //textBox1.Text = ".";
        }
    }

OnOpen.Emit 不应该真正引发 OnOpen 事件有什么明显的原因吗?

【问题讨论】:

    标签: c# events websocket websocket-sharp


    【解决方案1】:

    在你的情况下,真正的原因是这条线

     using (var ws = new WebSocket("ws://169.254.101.183"))
    

    当你的块结束时,'ws' 对象被释放,包括你的事件处理程序。延迟一段时间后,您会收到来自 WebSocket 的响应,但处理程序已被销毁。

    【讨论】:

      【解决方案2】:

      在 MainWindow_Loaded 方法中,您是在订阅 OnOpen 事件之前调用 Connect。

      如果您在调用 Connect 之前订阅了该事件,那么在成功连接后 textBox1.Text 应设置为“已连接”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多