私はsignalr javascriptクライアントを使用してsugnalrハブに接続しています。Signalr Uncaught TypeError:currentHub.server.OnConnected is not function(...)
ハブOnConnectedメソッドこの
public override Task OnConnected()
{
try
{
var cType = Context.QueryString["type"];
var connectionId = Context.ConnectionId;
var connectedUserList = (from d in Users
where d.ClientType == cType
select d).ToList();
if (connectedUserList.Count > 0)
{
var conUser = connectedUserList.First<ConnectedUsers>();
conUser.ConnectionIds.Add(connectionId);
}
else
{
var newUser = new ConnectedUsers
{
ConnectionIds = new HashSet<string> {connectionId}
,
ClientType = cType
};
Users.Add(newUser);
}
}
catch (Exception ex)
{
}
return base.OnConnected();
}
他のハブ方式
public void PushMessage()
{
try
{
var context = GlobalHost.ConnectionManager.GetHubContext<MainHub>();
var user = (from d in Users
where d.ClientType == "WIN"
select d).Single();
context.Clients.Clients(user.ConnectionIds.ToArray()).sendAlert("EXCEL");
}
catch (Exception e)
{
//throw;
}
}
とJavaScriptクライアント
<html>
<body>
@RenderBody()
@Scripts.Render("~/bundles/jquery")
<script src="~/Scripts/jquery.signalR-2.2.1.js"></script>
<script src="@Url.Content("http://localhost:1010/signalr/hubs")"></script>
@RenderSection("scripts", required: false)
</body>
</html>
<script type="text/javascript">
var currentHub = [];
var connectionDetails = {};
var SignalRHandler = {
_settings: {
connectionDetails: {
id: "1",
userName: ""
},
hub: $(),
callBack: $(),
url: ""
},
initilaize: function(options) {
this._settings = $.extend(true, this._settings, options);
if (!$.connection)
alert("$.connection undefined");
else
this._bindEvents();
},
_bindEvents: function() {
// Start Hub
$.connection.hub.url = this._settings.url;
$.connection.hub.qs = { 'type': 'WEB' }
currentHub = $.connection[this._settings.hub], connectionDetails = this._settings.connectionDetails;
if (currentHub != undefined) {
currentHub.client.sendAlert = this._settings.callBack;
$.connection.hub.start().done(function() {
currentHub.server.OnConnected();
});
$.connection.hub.disconnected(function() {
setTimeout(function() {
$.connection.hub.start().done(function() {
currentHub.server.OnConnected();
});
}, 2000); // Restart connection after 2 seconds.
});
}
},
pushChatMessage: function() {
currentHub.server.pushMessage();
},
showMsg:function(msg) {
alert(msg);
}
};
jQuery(document).ready(function($) {
SignalRHandler.initilaize({
callBack: SignalRHandler.showMsg,
hub: "mainHub",
url: "http://localhost:1010/signalr/"
});
});
</script>
の下にこのコードは完璧に働いているとに接続するように、コードを接続していますハブからのメッセージを連続的に受信する。 しかし、私がデバッガコンソールをチェックするとき、それは言う。
Uncaught TypeError: currentHub.server.OnConnected is not a function(…)
このエラーを取り除くにはどうすればよいですか?
手動OnConnectedを呼び出すことはありません。これは、クライアントがサーバーに接続するときに呼び出されます。 – Pawel