我一直在尝试评估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');
});
答案 0 :(得分:2)
首先,最新版本是3.0.2(不是3.0.3),但这并不重要:)
最新版本的插件框架中有一个众所周知且有文档记载的错误。如果您运行控制台应用程序(或任何其他* .exe)项目,该错误只会影响您,因为默认情况下,xsockets仅查找* .dll而不是* .exe。
问题和解决方法描述为here
但是你的代码无论如何都不会起作用,因为你有错误(从我所看到的)。 您的控制器名为“TestCont”,但您连接到“testcont”。连接字符串区分大小写。
编辑:我也认为你错误地理解OnMessage方法,因为你已经添加了对这个确切名称的订阅。