2016-06-10 12 views
1

В настоящее время я студент, пытающийся сделать мини-проекты для своей школы. Я полностью новичок в signalR. Пожалуйста, помогите мне.Извлечение счетчика и отправка клиенту через signalR

Я пытаюсь получить счет из базы данных и вернуть его и отправить клиентам, которые называют этот метод/функцию. Затем Клиент отобразит на веб-странице.

Startup

using Microsoft.Owin; 
using Owin; 
using mini_project; 

namespace mini_project 
{ 
public class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     app.MapSignalR(); 
    } 
} 
} 

Hub

public class queryHub : Hub 
{ 
    private static mpDBEntities db = new mpDBEntities(); 
    private int noG { get; set; } 
    public void GetStatusG() 
    { 
     var x = db.Database.ExecuteSqlCommand("select COUNT(Room_Status.Status) from Room_Cur_Status, Room_Status where Room_Status_Id = Room_Status.Id AND Room_Status.Status = 'G'"); 
     //var x = db.Room_Cur_Status 
     // .Where(o => o.Room_Status.Status.Equals('G')) 
     // .Select(o => o.Room_Status.Status) 
     // .Count(); 
     Clients.All.getG(x); 
    } 
} 

Код клиента

<script> 
    var chat; 
    var noG; 
    $(document).ready(function() { 
     chat = $.connection.queryHub; 
     function Test() { 
      noG = chat.client.getG; 
     } 
     $.connection.hub.start() 
        .done(function() { 
         console.log('connected'); 
         Test(); 
         console.log('Got It'); 
         document.getElementById('test1').innerHTML = noG 
        }) 
       .fail(function (ex) { 
        console.log('not connected' + ex); 
       }); 
    }); 
</script> 
</head> 
<body> 
    <div> 
     <p id="test1"></p> 
    </div> 
</body> 
</html> 

ответ

0

Вам нужно определить getG функция внутри document.ready обработчика для хаба как так

chat.client.getG = function(x) { 
    alert("I have received a value, here it is..." + x); 
}; 

Кроме того, вы, вероятно, не называя свой метод Hub где-нибудь, я обычно предоставить HubMethodName атрибут

[HubMethodName("GetStatusG")] 
public void GetStatusG() 
{ 
    var x = db.Database.ExecuteSqlCommand("select COUNT(Room_Status.Status) from Room_Cur_Status, Room_Status where Room_Status_Id = Room_Status.Id AND Room_Status.Status = 'G'"); 
    //var x = db.Room_Cur_Status 
    // .Where(o => o.Room_Status.Status.Equals('G')) 
    // .Select(o => o.Room_Status.Status) 
    // .Count(); 
    Clients.All.getG(x); 
} 

Кроме того, я не см. в любом месте вашего кода клиента, где вы вызываете метод Hub. Попробуйте

<input type="button" id="update" value="Update" /> 

затем обрабатывать его

$ ("# обновление") нажмите. (Функция() { chat.server.GetStatusG(); });

Так что ваш клиентский код становится

<html> 
<head> 
<script> 
    var chat; 
    var noG; 
    $(document).ready(function() { 
     chat = $.connection.queryHub; 
     chat.client.getG = function (x) {; 
      $("#test1").html("Hey I received a new value of x... " + x); 
     } 

$("#update").click(function() { 
chat.server.GetStatusG(); 
}); 
     $.connection.hub.start() 
        .done(function() { 
         console.log('connected'); 
         Test(); 
         console.log('Got It'); 
        }) 
       .fail(function (ex) { 
        console.log('not connected' + ex); 
       }); 
    }); 
</script> 
</head> 
<body> 
    <div> 
     <input type="button" id="update" value="Update" /> 
     <p id="test1"></p> 

    </div> 
</body> 
</html> 

Here is the Damien Edward's MoveShape example that works on the new version of SignalR

+0

«$ (документ) .ready (функция() { \t \t \t чат = $ .connection.queryHub; \t \t \t $. connection.hub.start() \t \t \t \t \t \t .do ne (функция() { \t \t \t \t \t console.log ('connected'); \t \t \t \t \t \t \t \t \t \t \t \t \t}) \t \t \t \t \t .fail (функция (ех) {\t \t \t \t \t \t консоли.log ('not connected' + ex); \t \t \t \t \t}); \t \t \t chat.client.getG = функция (х) { \t \t \t \t console.log (х); \t \t \t \t document.getElementById ('test1') innerHTML = х \t \t \t}. \t \t});.?» я добавил, как это, но он все еще не работает –

+0

Ваш хаб правильно уже подключен вы получаете любое сообщение об ошибке – fahadash

+0

А где вы звоните в GetStatusG() на сервере/hub? – fahadash

 Смежные вопросы

  • Нет связанных вопросов^_^