C# XSockets和Asp.NET4.0网站项目

C# XSockets和Asp.NET4.0网站项目,c#,asp.net,xsockets.net,C#,Asp.net,Xsockets.net,有谁能给我一个ASP.net 4.0网站项目的工作示例,其中包含XSockets的工作实现 我已设置了一个空白解决方案,可以连接到ws://localhost:4502/Generic fine,但无法连接到添加到App_Code文件夹的自定义控制器 我使用的是最新的XSockets,今天(2014年1月13日)通过nuget安装 当尝试连接到自定义控制器时,我得到一个XSocketException“在加载的插件中找不到处理程序名称” 自定义控制器代码是名为MyTestController.c

有谁能给我一个ASP.net 4.0网站项目的工作示例,其中包含XSockets的工作实现

我已设置了一个空白解决方案,可以连接到ws://localhost:4502/Generic fine,但无法连接到添加到App_Code文件夹的自定义控制器

我使用的是最新的XSockets,今天(2014年1月13日)通过nuget安装

当尝试连接到自定义控制器时,我得到一个XSocketException“在加载的插件中找不到处理程序名称”

自定义控制器代码是名为MyTestController.cs的I文件,位于App_代码文件夹中。我已经试着让它工作了4-5个小时,但运气不好。我找不到任何说明需要在RegisterRoutes调用中手动注册新控制器的文档

我曾尝试创建一个MVC应用程序来查看添加XSockets对它的作用,但这并没有手动注册任何路由

使用Web应用程序或MVC应用程序是不可能的,因为我们需要尝试将其实现到一个非常大且成熟的遗留网站中

自定义控制器如下所示:

 using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading;
using System.Web;

using XSockets.Core.Common.Socket.Event.Interface;
using XSockets.Core.XSocket;
using XSockets.Core.XSocket.Helpers;


/// <summary>
/// Summary description for TestController
/// </summary>
/// 
namespace XSocketsTest1
{ 

    public class MyTestController: XSocketController
    {
        public MyTestController()
        {
            Debug.Print("TestController Created");
            this.OnOpen += TestController_OnOpen;
            this.OnClose += TestController_OnClose;
        }

        void TestController_OnClose(object sender, XSockets.Core.Common.Socket.Event.Arguments.OnClientDisconnectArgs e)
        {
            Debug.Print("TestController_OnClose");
            //throw new NotImplementedException();
        }

        void TestController_OnOpen(object sender, XSockets.Core.Common.Socket.Event.Arguments.OnClientConnectArgs e)
        {
            Debug.Print("TestController_OnOpen");
            this.Send("Hello there. You have connected.", "msgClient");
        }   

        void RunReport()
        {
            Debug.Print("RunReport");
            this.Send("You called RunReport", "msgClient");
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用系统诊断;
使用System.Linq;
使用系统线程;
使用System.Web;
使用XSockets.Core.Common.Socket.Event.Interface;
使用XSockets.Core.XSocket;
使用XSockets.Core.XSocket.Helpers;
/// 
///TestController的摘要说明
/// 
/// 
命名空间XSocketsTest1
{ 
公共类MyTestController:XSocketController
{
公共MyTestController()
{
打印(“TestController已创建”);
this.OnOpen+=TestController\u OnOpen;
this.OnClose+=TestController\u OnClose;
}
void TestController_OnClose(对象发送方,XSockets.Core.Common.Socket.Event.Arguments.OnClientDisconnectArgs e)
{
打印(“TestController_OnClose”);
//抛出新的NotImplementedException();
}
void TestController_OnOpen(对象发送方,XSockets.Core.Common.Socket.Event.Arguments.OnClientConnectArgs e)
{
打印(“TestController_OnOpen”);
发送(“您好,您已连接。”,“msgClient”);
}   
void RunReport()
{
调试。打印(“运行报告”);
发送(“您称之为RunReport”、“msgClient”);
}
}
}
Default.aspx位于此处:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h1>Clean Page - XSockets In Web Site Project Tester</h1>
        <p>This is to prototype xsockets in a web site project.</p>
        <p>Target environment needs to be .net 4.0 Web Site project, and <em>cannot be a web application</em>.</p>

        <h4>Results</h4>
        <div class="js-log-contents log-contents">
        </div>

    </div>
    </form>

    <style type="text/css">
        .log-contents{border:2px solid grey;min-height:200px; width:400px;}
        .log-contents.success{border-color:#0f0;}
        .log-contents.error{border-color:#f00;}
        em{font-weight:bolder;}
    </style>
    <script src="Scripts/jquery-2.0.3.min.js"></script>
    <script src="Scripts/XSockets.latest.js"></script>
    <script src="Scripts/XSockets.fallback.latest.js"></script>
    <script type="text/javascript">
        var page =
            {
                self: this,
                config: {
                    //controllerAddress: "ws://localhost:4502/MyTest"                                                //  Does Not Work
                    controllerAddress: "ws://localhost:4502/MyTestController"                              //  Does Not Work
                    //controllerAddress: "ws://localhost:4502/XSocketsTest1.MyTest"                      //  Does Not Work
                    //controllerAddress: "ws://localhost:4502/XSocketsTest1.MyTestController"   //  Does Not Work
                    //controllerAddress: "ws://localhost:4502/Generic"                                               //  Works
                },

                logger:
                {
                    logIdentifier: "js-log-contents",
                    failCssClass: "error",
                    successCssClass: "success",
                    fail: function (msg) { $("." + this.logIdentifier).append(msg).removeClass(this.successCssClass).addClass(this.failCssClass); },
                    success: function (msg) { $("." + this.logIdentifier).append(msg).removeClass(this.failCssClass).addClass(this.successCssClass); }
                }
            };


    //  XSockets client code - copied from xsockets.net.
        var conn;
        var controllerAddress = page.config.controllerAddress;
        conn = new XSockets.WebSocket(controllerAddress);

        conn.on(XSockets.Events.open, function (clientInfo) {
            console.log("Open successful, controller name is " + controllerAddress, clientInfo)
            page.logger.success("Successfully opened " + controllerAddress);
        });

        conn.on(XSockets.Events.onError, function (err) {
            console.log('Error, controller name is ' + controllerAddress, err);
            page.logger.fail("Failed to open " + controllerAddress);
        });

        $(function () {
        });
    </script>
</body>
</html>

清理页面-Web站点中的XSockets Project Tester
这是为了在网站项目中创建xsockets原型

目标环境必须是.net 4.0网站项目,不能是Web应用程序

结果 .log内容{边框:2px纯灰色;最小高度:200px;宽度:400px;} .log contents.success{边框颜色:#0f0;} .log内容。错误{边框颜色:#f00;} em{font-weight:粗体;} 变量页= { 赛尔夫:这个, 配置:{ //controllerAddress:“ws://localhost:4502/MyTest”//不工作 controllerAddress:“ws://localhost:4502/MyTestController”//不工作 //controllerAddress:“ws://localhost:4502/XSocketsTest1.MyTest”//不工作 //controllerAddress:“ws://localhost:4502/XSocketsTest1.MyTestController”//不工作 //控制器地址:“ws://localhost:4502/Generic”//Works }, 记录器: { LogiIdentifier:“js日志内容”, failCssClass:“错误”, 成功类:“成功”, 失败:函数(msg){$(“+this.logidentier).append(msg).removeClass(this.successcsclass).addClass(this.failcsclass);}, 成功:函数(msg){$(“+this.logidentier).append(msg).removeClass(this.failcsclass).addClass(this.successcsclass);} } }; //XSockets客户端代码-从XSockets.net复制。 var-conn; var controllerAddress=page.config.controllerAddress; conn=新的XSockets.WebSocket(控制器地址); conn.on(XSockets.Events.open,函数(clientInfo){ log(“打开成功,控制器名称为”+controllerAddress,clientInfo) page.logger.success(“成功打开”+控制器地址); }); conn.on(XSockets.Events.onError,函数(err){ log('错误,控制器名称为'+controllerAddress,错误); page.logger.fail(“未能打开”+控制器地址); }); $(函数(){ });
当您将类添加到App_code文件夹时,visual studio会将它们标记为“build action=content”,而不是“build action=compile” 如果你想让你的控制器在App_代码中,只需右键单击文件并选择属性,然后将构建操作更改为compile而不是content

尽管XSockets有一个MVC模式,但它与ASP.NET MVC无关,因此您将看不到任何路由。XSockets是独立构建的,不依赖于IIS、Apache等

由于您的类(控制器)在App_代码下未编译,所以在启动时,XSockets将找不到它。如果由于某种原因无法更改为“build action”=编译,请添加一个类库,在其中安装XSockets.Core并构建控制器。然后,您可以在启动XSockets服务器的项目中引用此库。现在将由XSockets找到它

顺便说一句,我看到你在客户端连接时发送了一个“msgClient”事件,但我在你的javascript中没有看到任何关于该主题的订阅。

有人知道你是谁吗