5
私は実行している基本的なSignalRチャットサーバーのためのPhoneGap iOSクライアントを構築しようとしています(ASP.NET MVC 4)。ブラウザのページからアクセスするとすばらしいことになりますが、PhoneGapアプリから接続することはできません。iOSのPhoneGapアプリからSignalRハブに接続する方法は?
サーバーのGlobal.asax
protected void Application_Start()
{
// Register the default hubs route: ~/signalr * This must be registered before any other routes
RouteTable.Routes.MapHubs(new HubConfiguration { EnableCrossDomain = true });
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
サーバーのweb.config
<configuration>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"></modules>
</system.webServer>
</configuration>
サーバーハブ
public class ChatHub : Hub
{
public void Send(string name, string message)
{
Clients.All.broadcastMessage(name, message);
}
}
PhoneGapのクライアント
<body>
<div data-role="page">
<div data-role="header">
<h1>Life As A Pixel</h1>
</div><!-- /header -->
<div data-role="content">
<label for="username">Name:</label>
<input type="text" name="username" id="username" value="" />
<label for="message">Message:</label>
<input type="text" name="message" id="message" value="" />
<br>
<input type="button" value="Send" id="sendmessage" />
</div><!-- /content -->
<div data-role="footer" data-position="fixed">
<h4></h4>
</div><!-- /footer -->
</div><!-- /page -->
<script type="text/javascript" src="cordova-2.7.0.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<script type="text/javascript" src="js/jquery-1.9.1.js"></script>
<script type="text/javascript" src="js/jquery.mobile-1.3.1.js"></script>
<script type="text/javascript" src="js/jquery.signalR-1.0.0-rc1.min.js"></script>
<script type="text/javascript" src="http://www.mysite.com/signalr/hubs"></script>
<script type="text/javascript">
app.initialize();
</script>
<script type="text/javascript">
$(function() {
// Declare a proxy to reference the hub
jQuery.support.cors = true;
$.connection.hub.url = 'http://www.mysite.com/signalr';
var chat = $.connection.chatHub;
alert(chat);
//alert(chat);
// Create a function that the hub can call to broadcast messages.
//chat.client.broadcastMessage = function (name, message) {
//$('#discussion').append('<li><strong>' + name
// + '</strong>: ' + message + '</li>');
//};
// Set initial focus to message input box.
//$('#message').focus();
// Start the connection.
$.connection.hub.start({ jsonp: true }).done(function() {
alert("connected");
$('#sendmessage').click(function() {
// Html encode display name and message.
var encodedName = $('<div />').text($('#username').val()).html();
var encodedMsg = $('<div />').text($('#message').val()).html();
// Call the Send method on the hub.
chat.send(encodedName, encodedMsg);
// Clear text box and reset focus for next comment.
$('#message').val('').focus();
});
}).fail(function() {
alert("Failed to connect");
});
});
</script>
</body>
01:ここに私のコードの関連部分です
私は数多くのサイトを見てきましたが、それについては数多くの話がありましたが、理解できませんでした。事前に
おかげで、 ジェイソン
http://www.asp.net/signalr/overview/hubs-api/hubs-api-guide-javascript-client#crossdomain。メモを注意深く読んでください。 – davidfowl
記事dfowlerをありがとう。私が実際に行った多くのデバッグステップの1つとしてノートに記載されているように、実際にはcorsラインを削除しましたが、それは何の違いもありませんでした。私は実際にその特定の記事に出くわしたわけではありませんでした、そして、それはかなり良いように見えるので、私はそれを通過し、助けになるかもしれない他のものがあるかどうかを見ます。 – Jason
あなたはこれで運がありましたか?私は同じことをテストしようとしていました。 – user441521