XSockets - 自定义控制器未注册

时间:2013-12-24 16:30:33

标签: c# javascript

我一直在尝试评估XSockets,但看起来我很早就遇到了我的第一个绊脚石。我可以很好地连接到通用控制器,但自定义控制器似乎根本不起作用 - 我得到一个自定义消息:“在加载的插件中找不到处理程序名称”。谷歌搜索显示另一个人在SE中遇到此问题,但他们的解决方案对我不起作用。

我已经创建了一个控制台项目并从NuGet安装了最新的XSockets 3.03。我的代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using XSockets.Core.Common.Socket;
using XSockets.Core.XSocket;
using XSockets.Core.XSocket.Helpers;
using XSockets.Core.Common.Socket.Event.Interface;

namespace XSockets2
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var server = XSockets.Plugin.Framework.Composable.GetExport<IXSocketServerContainer>())
            {                
                Console.WriteLine("running!");
                server.StartServers();
                Console.ReadLine();
                server.StopServers();
            }
        }
    }

    public class TestCont: XSocketController
    {       
        public override void OnMessage(ITextArgs textArgs)
        {
            this.SendToAll(textArgs);
        }
    }
}

我的Javascript

    function connect2() {
                var host = "ws://localhost:4502/testcont";
                var conn;
                conn = new XSockets.WebSocket(host);   

                conn.on(XSockets.Events.open, function (clientInfo) {
                    message(clientInfo.ClientGuid); //appends message to textarea
                    console.log('Open', clientInfo);
                });

conn.on('OnMessage', function (d) {
                message(d);
                console.log('Message', d);
            });

            conn.on(XSockets.Events.onError, function (err) {
                message(err.CustomMessage);
                console.log('Error', err);
            });

            conn.on(XSockets.Events.close, function () {
                message('Closed');
                console.log('Closed');
            });

1 个答案:

答案 0 :(得分:2)

首先,最新版本是3.0.2(不是3.0.3),但这并不重要:)

最新版本的插件框架中有一个众所周知且有文档记载的错误。如果您运行控制台应用程序(或任何其他* .exe)项目,该错误只会影响您,因为默认情况下,xsockets仅查找* .dll而不是* .exe。

问题和解决方法描述为here

但是你的代码无论如何都不会起作用,因为你有错误(从我所看到的)。 您的控制器名为“TestCont”,但您连接到“testcont”。连接字符串区分大小写。

编辑:我也认为你错误地理解OnMessage方法,因为你已经添加了对这个确切名称的订阅。

相关问题