0

我在使用 XSockets.net 时遇到了一个奇怪的问题,也许有人可以帮我找出我做错了什么。

我有以下主要方法:

public void SendMessageToTestController(Guid id, string mess)
{
    ITextArgs textargs = new TextArgs(mess, "SendEventMessageToClient", "TestController");
    poolClient.Send(new { clientId = id, message = textargs }, "SendEventMessageToClient");
}

在我的控制器中:

 public void SendEventMessageToClient(Guid clientId, ITextArgs message)
        {
            if (message != null)
            {
                this.SendTo(p => p.ClientGuid == clientId, message.data, "events");
            }
        }

一切正常,来自客户端池的事件到达控制器,clientId 的值是正确的,但消息始终为空。难道我做错了什么?

谢谢!

4

1 回答 1

2

您不应创建 TextArgs 并将其发送到服务器。您可以向服务器发送您想要的任何内容,如果您的服务器端方法(操作方法)上没有自定义参数,XSockets 将为您创建一个 ITextArgs,因为您没有指定任何内容。请参阅:http: //xsockets.net/docs/c-server-api#custom-controllers

你的代码应该是...

//Client    
public void SendMessageToTestController(Guid id, string mess)
{        
    poolClient.Send(new { clientId = id, message = mess }, "SendEventMessageToClient");
}

//Action method on Controller
public void SendEventMessageToClient(Guid clientId, string message)
{
    this.SendTo(p => p.ClientGuid == clientId, message, "event");
}

由于在使用对象而不是多个参数时序列化更快,我会选择一个包含 clientid 和 message 的简单模型,并将其作为 aciton 方法的单个参数。

于 2014-02-04T02:35:58.997 回答