【发布时间】:2017-02-22 12:51:40
【问题描述】:
我正在使用 SignalR 网络聊天应用程序创建一个简单的 AngularJS。我有许多功能可以工作,但是我想创建一种可维护的方式来在服务器发送消息时接收消息等等。我遇到了最后一个问题,我似乎找不到从 SignalRData 服务返回到它所在的服务的方法。所以我的层次结构如下。
- 会话状态
- SignalRData
我的聊天视图上有一个使用 SessionState 服务的控制器。
我有用 SignalRData 编写的方法来处理从服务器接收消息我如何将该数据发送到存储在 SessionState 内的数组中,以便我的聊天控制器可以使用它来绑定到 ng-repeat 以创建聊天窗户?
我所有有用的代码
SignalRData 服务部分关于接收消息:
// Create a function that the hub can call to broadcast messages.
chat.client.incomingMessage = function (data) {
console.log("New message from " + data.sender + ": " + data.message + ".");
};
也是我对这项服务的对象:
// Declare a proxy to reference the hub.
var chat = $.connection.chatHub;
var State = {
Connection:
{
Connected: false,
Connection_Id: "",
Method: "auto",
chat: chat.client
}
};
SessionState 服务中发生了什么: 这已被简化以供查看
var State = {
Server: {
DataService: SignalRData
},
Messages: {
Chats: []
}
};
聊天控制器:
我最初的想法是我可以通过我的服务共享 chat.client 对象,然后在我的控制器中覆盖该功能,遗憾的是这不起作用,所以我一直试图想办法从 SignalRData 中获取数据会话状态。
(function () {
'use strict';
angular
.module('Controllers')
.controller('chat_Controller', chat_Controller);
chat_Controller.$inject = ['$scope', 'SessionState'];
function chat_Controller($scope, SessionState) {
$scope.pageClass = "";
SessionState.Session.ValidatePage("User");
SessionState.Session.SmoothSlide("Heading");
SessionState.Server.DataService.Connection.chat.incomingMessage = newMessage;
function newMessage(data) {
console.log("Testing");
};
}
})();
【问题讨论】:
标签: angularjs signalr signalr.client