【发布时间】:2018-04-06 10:49:52
【问题描述】:
我想使用 SockJs 从服务器端接收所有 stomp 发布的事件。我已经创建了 WebSocketController。它在 app.js 中启动为
.controller('webSocketController', webSocketController)
WebSocketController.js
class WebSocketController {
constructor($rootScope, $scope) {
Object.assign(this, {$rootScope, $scope});
this.onConnected = this.onConnected.bind(this);
this.stompClient = '';
let vm = this;
setTimeout(function () {
vm.connect();
}, 2000);
}
onConnected(frame) {
console.log('Connected: ' + frame);
this.stompClient.subscribe('/topic/public', this.showMessage);
}
onError(error) {
console.log("Could not connect to WebSocket server. Please refresh this page to try again!");
console.log("error: ", error);
}
connect() {
var socket = new SockJS('/ws');
this.stompClient = Stomp.over(socket);
this.stompClient.connect({}, this.onConnected, this.onError);
}
showMessage(message) {
console.log("message received: ",message);
$rootScope.$broadcast('refreshAccessPointList');
}
getStompClient() {
return this.stompClient;
}
}
var MyController = new WebSocketController();
MyController.$inject = ['$scope', '$rootScope'];
export default MyController;
当 showMessage() 尝试广播接收到的事件时,它找不到 $rootScope。 控制台说:Uncaught ReferenceError: $rootScope is not defined at l (webSocket.controller.js?eaab:33) 知道我错过了什么吗?
【问题讨论】:
标签: angularjs angularjs-scope angularjs-controller sockjs