none
SignalR y $.connection is undefined RRS feed

  • Pregunta

  • Hola buenas estoy tratando de hacer funcionar un ejemplo básico en mi proyecto con SignalR pero ni siquiera consigo hacerlo funcionar.

    Estoy trabajando con un proyecto ASP.NET WebForms Framework 4.5.2 c#

    1. He instalado "Microsoft.AspNet.SignalR" version="2.2.1" targetFramework="net452" con todas sus dependencias.

    2. He añadido en App_Code un fichero llamado Startup.cs

    [assembly: OwinStartup(typeof(Startup))]
    
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
        }
    }
    

    3. He referenciado en mi Default.Master:

        <%: System.Web.Optimization.Scripts.Render("~/Scripts/jquery-1.12.0.min.js") %>
        <%: System.Web.Optimization.Scripts.Render("~/Scripts/jquery.signalR-2.2.1.min.js") %>
        <%: System.Web.Optimization.Scripts.Render("~/Scripts/bootstrap.min.js") %>
        <%: System.Web.Optimization.Scripts.Render("~/Scripts/app.js") %>
       <script src="/signalr/hubs"></script>
        <script type="text/javascript">
                $(function () {
                    var chat = $.connection.echoHub;
                    chat.client.enviar = function (mensaje) {
                        $('#Mensajes').append('<li>' + mensaje + '</li>');
                    };
                    $.connection.hub.start().done(function () {
                        $("#Enviar").click(function () {
                            chat.server.enviarMensaje($('#Mensaje').val());
                            $('#Mensaje').val("");
                        });
                    });
                });
        </script>

    Así como el código html para que muestre los mensajes.

    <h1>SignalR Chat </h1>
    <p>
    <label for="Mensaje">Mensaje:</label>
    <input type="text" id="Mensaje" />
    </p>
    <p>
    <input type="button" id="Enviar" value="Enviar Mensaje" />
    </p>
    <ul id="Mensajes">
    </ul>


    4. He añadido en App_Code un fichero llamado EchoHub.cs

    public class EchoHub : Hub
    {
        public void EnviarMensaje(string mensaje)
        {
            Clients.All.Enviar(mensaje);
        }
    }

    Me carga la página, pero en la consola del navegador me aparece constantemente:
    TypeError: $.connection is undefined

    He mirado en la carga de los js, y me carga bien, jquery, SignalR y hubs pero cuando va a llamar en el script a $.connection me indica todo el rato que no se ha definido.

    ¿Podrían indicarme si lo estoy haciendo bien?, influye que en global.cs tenga definidas en el Application_Start rutas..no se ya por donde mirar este error.

    Gracias.









    viernes, 9 de diciembre de 2016 11:10

Respuestas

  • hola

    me suena que puede ser un problema en el orden de carga de los .js

    que pasa si quitas los System.Web.Optimization y defiens los .js de forma simpel con el <script> en el html de la pagina web, por supuesto cuando hagas este cambio no uses el ~/


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta Joyce_ACModerator lunes, 12 de diciembre de 2016 17:46
    • Votado como útil dudasc martes, 13 de diciembre de 2016 7:21
    • Marcado como respuesta Joyce_ACModerator miércoles, 28 de diciembre de 2016 19:04
    lunes, 12 de diciembre de 2016 4:31

Todas las respuestas

  • hola

    me suena que puede ser un problema en el orden de carga de los .js

    que pasa si quitas los System.Web.Optimization y defiens los .js de forma simpel con el <script> en el html de la pagina web, por supuesto cuando hagas este cambio no uses el ~/


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta Joyce_ACModerator lunes, 12 de diciembre de 2016 17:46
    • Votado como útil dudasc martes, 13 de diciembre de 2016 7:21
    • Marcado como respuesta Joyce_ACModerator miércoles, 28 de diciembre de 2016 19:04
    lunes, 12 de diciembre de 2016 4:31
  • Leandro, a lo largo de la semana intentaré realizar lo que me comentas y ya comentaré si ha funcionado correctamente, gracias por la ayuda!
    martes, 13 de diciembre de 2016 7:21