如何在移动设备上连接SignalR Client

时间:2015-01-27 13:26:48

标签: javascript c# signalr signalr-hub mosync

现在我正在开发使用VS2012的自主信号服务器应用程序和使用Mosync IDE中的HTML / JS WebUI的客户端应用程序。当客户端和服务器应用程序之间的通信时,在所有浏览器和android模拟器上成功创建信号器中心。但是当我在手机上使用USB调试时,它不起作用。它的产品' undefined'信息。如何在我的手机上成功连接。请指导我。

服务器端代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Reflection;
using System.IO;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
using Microsoft.Owin.Hosting;
using Microsoft.Owin.Cors;
using Microsoft.Owin;
using Owin;

namespace SignalRServer
{
public partial class Form1 : Form
{
    private IDisposable signalR { get; set; }
    public string ServerURI;
    MyNewHub h = new MyNewHub();
    public Form1()
    {
        InitializeComponent();
    }

    private void btnStart_Click(object sender, EventArgs e)
    {
        writeToConsole("Starting server...");
        btnStart.Enabled = false;
        Task.Run(() => StartServer());
    }
    private void StartServer()
    {
        try
        {
            //signalR = WebApp.Start(ServerURI);
            if (File.Exists(Application.StartupPath + "\\IPAddress.txt"))
            {
                ServerURI = System.IO.File.ReadAllText(Application.StartupPath + "\\IPAddress.txt").Trim();
                signalR = WebApp.Start(ServerURI);
            }
            else
            {
                MessageBox.Show("IPAddress not found");
            }

        }
        catch (TargetInvocationException)
        {
            writeToConsole("Server failed to start. A server is already running on" + ServerURI);
            this.Invoke((Action)(() => btnStart.Enabled = true));
            return;
        }
        this.Invoke((Action)(() => btnStart.Enabled = true));
        writeToConsole("Server started at" + ServerURI);
    }
    public void writeToConsole(string message)
    {
        if (RichTextBoxConsole.InvokeRequired)
        {
            this.Invoke((Action)(() => writeToConsole(message)));
            return;
        }
        RichTextBoxConsole.AppendText(message + Environment.NewLine);
    }

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (signalR != null)
        {
            signalR.Dispose();
        }
    }
    private void btnSend_Click(object sender, EventArgs e)
    {
        string msg = txtMesage.Text;
        h.Receive(msg);


    }


}
class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.UseCors(CorsOptions.AllowAll);
        app.MapSignalR();
    }
}
[HubName("myNewHub")]
public class MyNewHub : Hub
{
    public void Send(string name, string message)
    {
        Clients.All.addMessage(name, message);
        Program.mainform.writeToConsole(name + " : " + message);
    }
    public void Receive(string msg)
    {
        var context = GlobalHost.ConnectionManager.GetHubContext<MyNewHub>();
        context.Clients.All.addMessage("Admin", msg);

    }
    public override Task OnConnected()
    {
        Program.mainform.writeToConsole("Client Connected:" + Context.ConnectionId);

        return base.OnConnected();
    }
    public override Task OnDisconnected(bool stopCalled)
    {
        Program.mainform.writeToConsole("Client DisConnected: " + Context.ConnectionId);
        return base.OnDisconnected(stopCalled);
    }

}
}

客户端代码:

<!DOCTYPE html>
<!--
* @file index.html
*
* Template application that shows examples of how to access
* device services from JavaScript using the Wormhole library.
-->
<html>
<head>
<title>SignalR Simple Chat</title>
<style type="text/css">
    .container {
        background-color: #99CCFF;
        border: thick solid #808080;
        padding: 20px;
        margin: 20px;
    }
</style>
    <meta name="viewport" content="width=320, user-scalable=no">
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <title>Wormhole Template App</title>
    <link rel="stylesheet" href="style.css" type="text/css" media="screen" title="no title" charset="utf-8">
    <script type="text/javascript" charset="utf-8" src="js/wormhole.js"></script>
    <script src="js/jquery-1.6.4.min.js"></script>
    <script src="js/jquery.signalR-2.0.3.min.js"></script>
    <script src="http://192.168.0.7:8080/signalr/hubs"></script>
    <script type="text/javascript">

        function clientconnect()
        {
            alert("Start Button Clicked");
              $.connection.hub.url = "http://192.168.0.7:8080/signalr";

                // Declare a proxy to reference the hub.
                var chats = $.connection.myNewHub;
                alert(chats);
                // Create a function that the hub can call to broadcast messages.
                chats.client.addMessage = function (name, message) {
                    // Html encode display name and message.
                    var encodedName = $('<div />').text(name).html();
                    var encodedMsg = $('<div />').text(message).html();
                    // Add the message to the page.
                    $('#discussion').append('<li><strong>' + encodedName
                        + '</strong>:&nbsp;&nbsp;' + encodedMsg + '</li>');
                };

                // Get the user name and store it to prepend to messages.
                $('#displayname').val(prompt('Enter your name:', ''));
                // Set initial focus to message input box.
                $('#message').focus();


                // Start the connection.
                $.connection.hub.start().done(function () {
                    $('#sendmessage').click(function () {
                        // Call the Send method on the hub.
                        chats.server.send($('#displayname').val(), $('#message').val());
                        // Clear text box and reset focus for next comment.
                        $('#message').val('').focus();

                    });
                });
        }


    </script>
</head>
<body>
    <div class="container">
    <input type="text" id="message" />
    <input type="button" id="sendmessage" value="Send" />
    <input type="hidden" id="displayname" />
    <input type="button" value="Start" onclick="clientconnect()"/>
    <ul id="discussion"></ul>

    </div>
</body>

0 个答案:

没有答案