C# XSockets.Net服务器onOpen事件实现
我现在调整了XSockets.Net服务器 我读 使用事件 服务器端API提供了一些事件来帮助您解决问题 奥诺彭 连接客户端并完成握手时调用C# XSockets.Net服务器onOpen事件实现,c#,xsockets.net,C#,Xsockets.net,我现在调整了XSockets.Net服务器 我读 使用事件 服务器端API提供了一些事件来帮助您解决问题 奥诺彭 连接客户端并完成握手时调用 //Hook up the event in the constructor. public MyController() { this.OnOpen += MyController_OnOpen; } void MyController_OnOpen(object sender, OnClientConnectArgs e) { //T
//Hook up the event in the constructor.
public MyController()
{
this.OnOpen += MyController_OnOpen;
}
void MyController_OnOpen(object sender, OnClientConnectArgs e)
{
//The connection is open...
}
因此,如果我在VisualStduio.net中执行以下操作
class MyController : XSocketController
{
//Hook up the event in the constructor.
public MyController()
{
this.OnOpen += MyController_OnOpen;
}
void MyController_OnOpen(object sender, OnClientConnectArgs e)
{
//The connection is open...
}
}
MyController_OnOpen和OnClientConnectArgs用红色下划线表示警告,这显然意味着不好,也不起作用
我以前是一个OK C程序员,现在我做node.js
我知道他们想做的是
var myController = XSocketCotroller();
var myController_onOpen = function(obj,e)
{
// The connection is open...
};
myControler.onOpen = myController_onOpen;
很简单,但我不知道如何在C中实现这一点
你能指点一下吗。谢谢 我不得不这么做
public class Server : XSocketController
{
public Server()
{
this.OnOpen += onOpen;
}
void onOpen(object sender, XSockets.Core.Common.Socket.Event.Arguments.OnClientConnectArgs e)
{
this.send("connected");
}
public void send(String msg)
{
this.send(msg);
}
}
OnClientConnectArgs e不足以发生错误。猜测您正在使用XSockets 3.0.6? 但我将为3.0.6和新的4.0编写示例 真的不知道从onOpen发送连接的事件,因为服务器会自动发送事件 服务器上的控制器名称让我感到困惑,请参见下文 服务器端 3.0.6 4.0 客户端 3.0.6 4.0 因此,3.*和4.*之间的最大区别在于,您可以在一个套接字上通过多个控制器进行多路传输 4.0将支持RPC,这使得连接到的绑定过时。。。我们可以使用Invoke直接从服务器调用该方法 猜测您正在NodeJS中编写一些自定义客户端,但是您仍然会收到OnOpen数据,而不会从控制器上的OnOpen事件发送它 问候
Uffe非常感谢您的回答。我可能需要按照您的建议更新到4.0。话虽如此,在此提出另一个问题。正如我前面提到的,我计划使用node.js客户端,而不是C。我可能需要为xSockets.net启动另一个专用问题。当做我将在这里发布链接。我发布另一个问题。如果你愿意,请检查一下。谢谢
using XSockets.Core.Common.Socket.Event.Arguments;
using XSockets.Core.XSocket;
using XSockets.Core.XSocket.Helpers;
namespace KenOkabe
{
public class SampleController : XSocketController
{
public SampleController()
{
this.OnOpen += SampleController_OnOpen;
}
void SampleController_OnOpen(object sender, OnClientConnectArgs e)
{
//Send connected topic to client that connected.
//Just passing a anonymous object with info about the client, but it can be anything serializable..
this.Send(new {this.ClientGuid, this.StorageGuid},"connected");
}
}
}
public class SampleController : XSocketController
{
public SampleController()
{
this.OnOpen += SampleController_OnOpen;
}
void SampleController_OnOpen(object sender, OnClientConnectArgs e)
{
//Send connected topic to client that connected.
//Just passing a anonymous object with info about the client, but it can be anything serializable..
this.Invoke(new { this.ConnectionId, this.Context.PersistentId }, "connected");
}
}
var client = new XSocketClient("ws://127.0.0.1:4502/SampleController", "*");
client.OnOpen += (sender, eventArgs) => { Console.WriteLine("OPEN"); };
client.Bind("connected", textArgs => Console.WriteLine(textArgs.data));
client.Open();
var client = new XSocketClient("ws://127.0.0.1:4502", "http://localhost", "SampleController");
client.Controller("SampleController").OnOpen += (sender, connectArgs) => Console.WriteLine("OPEN");
client.Controller("SampleController").On("connected",data => Console.WriteLine(string.Format("{0}, {1}", data.ConnectionId, data.PersistentId)));
client.Open();