问题是,在制作过程中,webapp是通过HTTPS传递的,而signalR中心是通过经典HTTP传递的(例如http://test.com/SignalRNotificationH),并且正如预期的那样,大多数现代浏览器抛出混合内容警告并拒绝与之交谈signalR。
我的问题是:
1)有没有办法通过代码避免混合内容警告?
2)构建支持HTTPS的自托管http服务器是否值得?如果是这样,浏览器是否会在https://test.com/SignalRNotificationH上与具有自签名证书的客户端通话?
客户页码是:
<title>SignalR Echo</title>
<script type="text/javascript" src="Scripts/jquery-1.5.min.js"></script>
<script type="text/javascript" src="Scripts/json2.js"></script>
<!-- <script type="text/javascript" src="Scripts/jquery-2.0.3.js"></script>-->
<script type="text/javascript" src="Scripts/jquery.signalR-1.1.3.js"></script>
function htmlEncode(value) {
return $("<div/>").text(value).html();
}
function addMsg(msg) {
$("#messages").append("<li>" + htmlEncode(msg) + "</li>");
}
$(function () {
$("#join").click(function () {
var connection = $.connection("https://test.com/SendMessage", "groupname=" + $("#name").val(), true);
connection.received(function (data) {
addMsg(data);
});
connection.error(function (err) {
addMsg("Error: " + err);
});
addMsg("Connecting...");
connection.start(function () {
addMsg("Connected.");
$("#send").click(function () {
connection.send($("#msg").val());
});
});
});
});
</script>
<table>
<tr>
<td><span>Name:</span></td>
<td>
<input type="text" id="name" /></td>
<td>
<input type="button" value="Join" id="join" /></td>
</tr>
<tr>
<td><span>Message:</span></td>
<td>
<input type="text" id="msg" /></td>
<td>
<input type="button" value="Send" id="send" /></td>
</tr>
</table>
<ul id="messages"></ul>
`