ServiceStack と SignalR の間に奇妙な問題があるようです。両方のサービスは正常に動作し、異常なアクティビティはありません。SignarlR ハブは正常に読み込まれ、期待どおりに動作します。ServiceStack は Google 経由で認証します。問題はありません。
ただし、SS でサイトにサインインすると、すべて問題なく、SignalR を使用しているページに移動すると問題が発生するようです。SignalR の JavaScript が初期化されると、サーバー上の ServiceStack のすべてのセッション情報がクリアされるようです。つまり、ページを更新すると、ログインにリダイレクトされます。ただし、ページをそのままにしておくと、SignalR 通知が期待どおりに届きます。
何が起こっているのか、誰にもアイデアはありますか?
私の単純なコードは、StockTicker の例に基づいています。ここにあります:
<HubName("salesTicker")> _
パブリック クラス VerificationLogHub は、ハブ プライベート ReadOnly _verificationTicker を VerificationLogTicker として継承します
Public Sub New()
Me.New(VerificationLogTicker.Instance)
End Sub
Public Sub New(verTicker As VerificationLogTicker)
_verificationTicker = verTicker
End Sub
Public Function GetAllLogs() As IEnumerable(Of UI_GuestBook)
Return _verificationTicker.GetAllLogs()
End Function
Public Sub start()
_verificationTicker.StartMonitoring()
End Sub
Public Sub [stop]()
_verificationTicker.StopMonitoring()
End Sub
クラス終了
Ticker クラスは、StockTicker の例と実質的に同じです。唯一の違いは、データベースからデータを取得しているということであり、ランダムな株価を生成していないことは明らかです。
そして、これがボールを転がすページの JavaScript です。
<script type="text/javascript">
$(function () {
var ticker = $.connection.salesTicker;
$.connection.hub.start().pipe(init);
function init() {
return ticker.server.getAllLogs().done(function (guestBooksLog) {
ticker.server.start();
if(guestBooksLog.length>0)
updateStats(guestBooksLog[0]);
});
}
$.extend(ticker.client, {
updateStockPrice: function (GuestBook) {
updateStats(GuestBook);
}
});
});
function updateStats(GuestBook) {
$('#spanLsRate').html((GuestBook.Rate * 100).toFixed(1));
$('#spanDcCount').html(GuestBook.TotalCount);
console.log("Stats updated...");
}