用RxJS将数据从AngularJS服务返回给控制器
我正在使用Web插座连接到服务器. 我正在调用控制器的服务. 该请求将转到服务器,并且响应又回到了App.js文件中的服务. 现在我需要控制器文件中的响应. 任何人都可以帮助我如何将app.js的响应从提出请求的地方发送到控制器. app.js app.factory('MyService', ['$rootScope', function($rootScope) { var Service = { }; // Create our websocket object with the address to the websocket var ws = new WebSocket("Server_URL"); ws.onopen = function(){ console.log("Socket has been opened!"); }; ws.onmessage = function
0 2023-12-02
编程技术问答社区
使用共享的RXJS可观察到的Websocket重新连接Websocket
我有这样的观察: const records$ = Rx.DOM.fromWebSocket('ws://192.168.2.4:9001/feed/', null) .map(ev => parseRecord(ev.data)) .share(); 我有很多订户.当连接丢失时,所有订户都取消订阅: let records$Subscription; records$Subscription = records$.subscribe( record => { ... }, error => records$Subscription.dispose() ); 我验证了每次订阅的呼叫确实是一次.因此,share重新数已达到零. 但是,当我再次订阅records$时,未设置新的Websocket连接.但是,当我删除对share>的调用时,是.如何使用share> 无法正常工作 解决方案 我相信RXJS V5,share确
0 2023-12-02
编程技术问答社区
如何用RxJS从arrayBuffer中分割出一个数据框?
我正在使用WebSocket从硬件接收数据框架. 数据框是这样定义的: 0xbb(head) ---data--- 0xee(tail) 收到的数据存储在uint8array中,可能有多个帧: var buffer = new Uint8Array([0xbb,0,0,0,0xee,0xbb,1,1,1,0xee,0xbb,3,3,3,0xee]); 我可以将数组转换为可观察的: var obs= Rx.Observable.from(buffer); rxmarbles: --0xbb--0--0--0--0xee--0xbb--1--1--1--0xee--0xbb--2--2--2--0xee------ ------------------000------------------111------------------222------ 如何使用rxjs拆分可观察到的? 要使用哪个操作员? RXJS是这种情况的最佳实践吗? 解
0 2023-12-02
编程技术问答社区
如何使用rxjs定期检查实时连接?
我使用RXJS处理Websocket连接 var socket = Rx.Observable.webSocket('wss://echo.websocket.org') socket.resultSelector = (e) => e.data 我想定期(5s)发送ping消息,然后等待3s接收pong响应,并在未接收的情况下订阅A流. 我在没有成功的情况下尝试.我承认,所有可用的操作员都会有点迷失,以处理超时,辩论或油门. // periodically send a ping message const ping$ = Rx.Observable.interval(2000) .timeInterval() .do(() => socket.next('ping')) const pong$ = socket .filter(m => /^ping$/.test(`${m}`)) .mergeMap( ping$.thro
0 2023-12-02
编程技术问答社区
Angular 2跨组件共享websocket服务
我正在使用Angular 2构建Web应用程序,其中我想让多个组件听相同的服务.该服务返回可观察到的可观察到的,该可观察到从Websocket返回传入数据.我根据 excement>示例. 当前的问题是: 数据是通过服务从家庭组件发送到服务器(使用WebSocket)的,并返回数据.但是,只有home.com中的观察者被调用(使用ID:ROOM.创建和数据),而不是Navbar中的一个. 有人可以告诉我为什么两者都被召唤?我还尝试将消息$ .subscribe添加到app.component,但无济于事. 现在,让我们进入代码. 返回可观察的消息服务.组件使用此服务来发送和接收消息. @Injectable() export class MessageService { private _messages: Rx.Subject; messages$: Rx.Observable; constru
0 2023-12-02
编程技术问答社区
Angular 4中的Websocket和RxJS的困惑
我正在尝试使用WebSocket和Angular 4学习RXJS,并找到了一个很好的例子他们创建了2个Angular Services,Websocket服务: import { Injectable } from '@angular/core'; import * as Rx from 'rxjs/Rx'; @Injectable() export class WebsocketService { constructor() { } private subject: Rx.Subject; public connect(url): Rx.Subject { if (!this.subject) { this.subject = this.create(url); console.log("Successfully connected: " + url); }
0 2023-12-02
编程技术问答社区
Angular4 Websocket rxjs重新连接和onError
看来有几个类似的问题,但是几天后,我找不到正确的答案.我的问题是如何知道服务器是否关闭了Websocket以及如何尝试重新连接.我已经看到了几个示例,但是当我想在更改视图时从客户端关闭Websocket的功能时,它们都没有正常工作. 然后,我找到了这个从客户端关闭Websocket已不再是问题,但是,我无法知道websocket何时由服务器关闭以及如何再次重新连接 . 我的代码与问题,但我要求另一件事.另外,我遇​​到了重新使用Websocket的问题,直到我看到他们在链接中交谈的共享功能,因此在我发布的课程中,Websocket服务和使用WebSocket服务的服务已合并为一个 我的WebSocket服务 import { Injectable } from '@angular/core'; import { Observable, Observer, Subscription } from 'rxjs'; import { Subject } from 'rx
0 2023-12-02
编程技术问答社区
接收连接和消息请求并发出消息和连接状态更新的WebSocket Epic
我希望创建一个可以与我的应用程序的其余部分分开的Redux-Observable Epic.它需要: 听{ type: "SOCKET_TRY_CONNECT" }的传入动作,这也可能会在连接时无视任何其他socket_try_connect事件.此外,请收听要发送的消息,也许{ type: "SOCKET_MESSAGE_SEND", data } 发出传出动作{ type: "SOCKET_CONNECTED" },{ type: "SOCKET_DISCONNECTED", error }和{ type: "SOCKET_MESSAGE_RECEIVE", data } EPIC需要收听传入的插座连接请求,建立插座连接,然后在建立连接或丢失时输出状态更新.它还需要能够发送和接收消息,然后可以在其他地方处理这些消息. 我最接近的是const somethingEpic = action$ => action$.ofType('START_SOCKET_OR_WHA
2 2023-12-02
编程技术问答社区
使用RXJS 6.x websocketsubject客户端
我无法弄清楚如何在rxjs v6.x 中使用websocketsubjects 这是v5.5.6的工作html/js.评论的代码是我尝试在v6.x中使用它的尝试: --> // const { WebSocketSubject } = rxjs.webSocket; // const socket$ = WebSocketSubject.create('ws://localhost:8080'); const sock
0 2023-12-02
编程技术问答社区
没有sockjs的春季启动Websocket
我一直在为此挣扎至少两个星期.我是Webockets的新手.我在休息端点方面有很好的经验. 我的用例很简单.客户端启动一个Websocket连接,将一些信息发送到服务器,服务器使用该信息,然后以某个常规间隔向客户端发送一次信息,每5秒钟. 我在此处遵循教程 - Stomp-websocket/ 它正如解释的完美工作. 根据上述教程,客户端启动HTTP请求,该请求升级到WebSocket. 在我的情况下,前端是一个Angular 10应用程序,前端开发人员更喜欢使用rxjs/websocket,并且不想使用SockJS client,因为他确定我们不必支持任何旧版浏览器,这就是我打击的地方. 显然rxjs/websocket在ws://协议中需要URL. 在以下片段中,我认为我的等效WS协议将是 ws://localhost:8080/test但是,它似乎不起作用.我不确定怎么了.任何帮助都非常感谢! @Configuration @EnableWebSocketM
0 2023-12-02
编程技术问答社区
在Angular和rxjs中重新连接一个websocket?
我有一个基于NGRX/Store(v2.2.2)和RXJS(v5.1.0)的应用程序,该应用程序使用可观察到的可观察数据来倾听Web套接字以获取传入数据.启动应用程序时,我会完美地收到传入的数据. 但是一段时间后(更新很少出现)该连接似乎丢失了,我再也不会收到传入的数据了.我的代码: 服务 import { Injectable, OnInit } from '@angular/core'; import { Observable } from 'rxjs'; @Injectable() export class MemberService implements OnInit { private websocket: any; private destination: string = "wss://notessensei.mybluemix.net/ws/time"; constructor() { } ngOnInit() { } li
0 2023-12-02
编程技术问答社区
RxJS subscribe()函数内的组件变量未被定义
订阅中的变量不确定,但是当我在登录服务订阅之前放断点时,我有变量定义. 服务: getCashierRiskProfiles(): Observable { return this.http.get(this._baseUrl + "src/HTTPJson/cashierriskprofile.json") .map((res: Response) => res.json()) .catch((error: any) => Observable.throw(error.json().error || 'Server error')); } 组件: import { Component, OnInit } from "@angular/core"; import { Observable } from 'rxjs/Observable'; import { CashierRiskProfileSer
0 2023-11-24
编程技术问答社区
在Angular中,在返回obsable之前添加验证信息
每次按钮为clicke,如果Modelform无效,则返回通知消息,并且不继续创建用户(CreateUser). 它只能继续返回此.accountservice.greate,如果没有表单验证错误 该功能是否可以干净,正确地实现?是否有一些主要问题引起问题?谢谢. 我在哪里放置checkInputs验证,如果存在验证错误,则不应在此上进行.countservice.create #html代码 Create User #code @ViewChild('createUserBtn', { static: true, read: ElementRef }) button: ElementRef; ngAfterViewInit(): void { fromEve
2 2023-11-13
编程技术问答社区
当返回一个承诺时,自定义异步验证不工作
我正在调用Web API检查是否有urlalias可用,对于此任务,我正在使用ASYNC验证器中的HttPservice. 问题是,当调用验证器时,执行所有正确的代码路径(所有console.log()运行且按预期行为). 验证的承诺是否返回/解决为null或{ 'isUrlAliasActivityMainAvailable': true },控制器总是显示一个错误对象如下,从而使表单状态保持无效,为什么(血腥地狱!)? 我正在使用:Angular:2.1.0和RXJS:5.0.0-Beta.12 这是我的FormBuilder: this.formBuilder.group({ //... "urlAliasActivityMain":[null,[ ValidatorsZr.isUrlAliasActivityMainAvailableAsyncValidator(this.httpActivityService)]], }); 这是我的验证者:
0 2023-11-12
编程技术问答社区
如何在Angular 4中用RxJS观察器去掉异步验证器?
我正在使用带有Angular 4反应式表单的自定义ASYNC验证器来检查是否已经通过调用后端来获取电子邮件地址. 但是,Angular调用验证器,该验证器向服务器请求每个输入的字符.这会在服务器上产生不必要的压力. 是否有可能使用RXJ可观察到的rxj呼叫优雅地审理异步? import {Observable} from 'rxjs/Observable'; import {AbstractControl, ValidationErrors} from '@angular/forms'; import {Injectable} from '@angular/core'; import {UsersRepository} from '../repositories/users.repository'; @Injectable() export class DuplicateEmailValidator { constructor (private users
8 2023-11-12
编程技术问答社区
在 React JS 中点击按钮时动态更改表单标题
我想根据单击按钮传递的值动态更改表单的标题. for ex: 我的表格标题是Book Health Care Services. 我想将表单的标题更改为Book Doctor Consult Services,每当我导航到按钮上的"单击"表单时,我想更改表单的标题. 该按钮位于组件A中,表单标题位于组件b. 中 我该如何实现这一目标.有人可以帮我吗? 解决方案 您可以使用此结构: import { useState } from "react"; // you need a mother component for passing variables from component A to B export default function MotherOfAAndB(props) { // changing variables need to be stored in state variables, this is a // React pa
0 2023-11-11
编程技术问答社区
如何对一个调用可观察服务的组件进行单元测试
我正在尝试单元测试一个可观察到的服务的函数.不知道从哪里开始. 组件函数我正在尝试进行单元测试: register() { this._registrationService.registerUser(this.form.value) .subscribe(data => { if (data) { this.errorMessage = ''; this.successMessage = 'Account successfully created'; } else { this.errorMessage = 'Error'; this.successMessage = ''; } }, error => { this.errorMessage
10 2023-11-07
编程技术问答社区
RXJS单元测试:回调的功能传递给了Testscheduler
我正在尝试使用TestScheduler为我的RXJS功能编写单元测试.有很多与之相关的帖子,我正在关注这篇文章:以下一部分有一个令人困惑的点: 我不明白为什么我们需要将回调函数传递到TestScheduler构造函数中.在帖子中,它提到它是assertDeppEqual function which tells the TestScheduler how to compare values. The methods used to compare values depends on your testing framework. 但是,这种解释对我来说尚不清楚.我不知道此功能与我们编写的实际测试逻辑之间有什么关系,例如: 在上述情况下,它断言expectObservable().toBe().他们之间有什么关系? 解决方案 Let's try to see what expectObservable(observable, subscriptionMarble
0 2023-11-07
编程技术问答社区
在HTTP单元测试中,catchError总是被调用。
我有一项呼叫HTTP的服务,我正在尝试为其编写测试.我试图测试的服务中的方法看起来像 // my.service.ts setUserAgreement(accept: boolean): Observable { const data = { accept }; return this.http.post(this.url, data, this.getHttpHeader('1')) .pipe( tap(x => this.logHttp(x)), map(x => this.parseHttp(x)), catchError(this.handleErrorInternal('setUserAgreement')) ); } 我的测试文件看起来像 import { TestBed, async } from '@angular/core/testing'; import { Htt
4 2023-11-07
编程技术问答社区