0

我在 .Net 4.5 版中使用 XSocket.Net 进行实时通信。

我对 XSocket.Net 很陌生。

以下是我尝试过的。在 Controller 文件夹中,我使用以下代码创建了 MyController。

using System;
using XSockets.Core.XSocket;
using XSockets.Core.XSocket.Helpers;

namespace XSocketTest.Controllers
{
   public class MyController : XSocketController
   {

      public void OnChatMessage(string message)
      {
         this.SendTo( message, "onChatMessage");
      }
   }
}

以下是根位置的html页面“index.html”

<!DOCTYPE html>
 <html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<input type="text" id="input-message" value="Goo LR" />
<button id="btn-send">send</button>
<div id="messages"></div>
<script src="Scripts/jquery-2.1.0.min.js"></script>
<script src="Scripts/XSockets.latest.js"></script>

<script>
    var conn = null;
    $(function () {
        //Create a connection
        conn = new XSockets.WebSocket('ws://localhost:4023/My');
        conn.onopen = function () {


            conn.on('onchatmessage', function (d) {
                $('#messages').prepend($('<div>').text(d));
            });
        };

        $('#btn-send').on('click', function () {
            conn.publish('onchatmessage', { message: $('#input-message').val() });
        });
    });
  </script>
</body>
 </html>

我在控制台(Chrome)中收到错误,在加载 html 时,“与 'ws://localhost:4023/My' 的 WebSocket 连接失败:WebSocket 握手期间出错:意外的响应代码:404”

我不知道我做错了什么。

任何帮助或建议将不胜感激。

4

1 回答 1

0

你启动服务器了吗?

我的猜测是您已经添加了启动类(如此处所述,请参阅安装到 webb 应用程序中)。

然后你在根目录中有 html 文件,当请求非服务器端资源时,不会调用 App_Start。在这种情况下,只需向根发出初始请求并在启动类中设置断点以查看它是否触发。现在您可以再次转到 html 文件。

刚刚看到另一个可能的错误,您正在使用端口 4023,但是您是否在该端口上启动了服务器?默认端口是 4502,但您当然可以配置它(参见此处

编辑:控制器中也有错误。我认为它甚至不应该编译。行:

this.SendTo(message, "onChatMessage");

应该是

this.SendToAll(message, "onChatMessage");

你当然可以使用 SenTo 但你必须传入一个过滤器

Func<T,bool>
于 2014-04-16T04:52:59.913 回答