【问题标题】:SignalR- send data to a specific clientSignalR-向特定客户端发送数据
【发布时间】:2012-11-22 04:40:41
【问题描述】:

我想向特定客户端发送数据。为此,我正在尝试以下方法;

public Task GetWaitingOrdersCount(string id, string clientId)
    {
        DateTime today = Util.getCurrentDateTime();

      var data = 10

      return Clients.Client(Context.ConnectionId).loadOrders(data);

      //return data;
    }

在上面的代码中,我想将“数据”发送到传递给此方法的“clientId”。 但是我在这一行有一个错误

 return Clients.Client(Context.ConnectionId).loadOrders(data);

错误是

'System.Threading.Tasks.Task<object>' does not contain a definition for 'loadOrders'

客户端代码

con.loadOrders = function (data) {
        loadOrders(data);

    };

function loadOrders(data) {

    $('#totalOrders').html(data);
}

关于错误的任何帮助???

编辑: 这是我的完整客户端代码..

<script type="text/javascript">
var con;
$(document).ready(function () {
    con = $.connection.messagingHub;


    $.connection.hub.start(function () {
        var myClientId = $.connection.hub.id;
        con.getWaitingOrdersCount('<%:ViewBag.rid%>',myClientId).done(function (data) {
            console.log(data);
        });
    });

    con.client.loadOrders = function (data) {
        loadOrders(data);

    };

});
function loadOrders(data) {

    $('#totalOrders').html(data);

【问题讨论】:

  • loadOrders(data) 的返回类型是什么?
  • 我没有返回任何东西..只是在 标签内打印“数据”。
  • 能否详细说明GetWaitingOrdersCount返回的Task是如何使用的?
  • Clients.Client 是如何定义的,它是什么?
  • 我添加了完整的客户端代码。

标签: asp.net-mvc signalr


【解决方案1】:

我刚刚试用了您的代码(稍作修改),它对我来说很好用。您使用的是什么版本的 SignalR?从你的服务器代码来看,我会说 1.0Alpha1+,但你的客户端代码看起来更像 0.5.3,除非你的 con 对象被分配给 $.connection.yourhub.client;

如果您更新到 SignalR 1.0Alpha2 并将您的客户端代码更改为:

var con = $.connection.myCon;// This is arbitrary and would change based on your naming

con.client.loadOrders = function (data) {
    loadOrders(data);

};

function loadOrders(data) {
    $('#totalOrders').html(data);
}

话虽如此,我相信您的问题与您使用的 SignalR 版本有关,即服务器端:因为您收到面向任务的错误。另一条可能有用的信息是了解如何调用 GetWaitingOrdersCount。也就是它是直接从客户端通过 con.server.getWaitingOrdersCount 调用还是从集线器内部调用。

希望这些信息对您有所帮助!

【讨论】:

  • 嗨 Taylor..my signalR 版本是 0.5.1.10822。这是我正在使用的正确版本吗?我在我的问题中添加了完整的客户端代码,我也根据您的代码进行了修改。还是有问题:(
  • 天哪,如果您使用的是 0.5.1,那么您的 Clients.Client 部分是错误的。 0.5.1 中的正确代码是 Clients[Context.ConnectionId].loadOrders(data);。如果您想更新到 1.0 Alpha2,您可以在 Nuget 中搜索 Microsoft.AspNet.SignalR 并将您的过滤器设置为“包括预发布”。然后从那里更新。请记住,如果使用 1.0 Alpha 2,会有几个重大更改(但我强烈建议使用 1.0 Alpha2)。
  • 好的..我升级到 alpha2。任务错误现在消失了。但最终又遇到了另一个问题。在这里:stackoverflow.com/questions/13512566/…
猜你喜欢
  • 1970-01-01
  • 2016-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多