stomp-js / ng2-stompjs Goto Github PK
View Code? Open in Web Editor NEWAngular 6 and 7 - Stomp service over Websockets
Home Page: https://stomp-js.github.io/
License: Apache License 2.0
Angular 6 and 7 - Stomp service over Websockets
Home Page: https://stomp-js.github.io/
License: Apache License 2.0
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/charm-
chat").setAllowedOrigins("http://localhost:4200").withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.setApplicationDestinationPrefixes("/app");
config.enableSimpleBroker("/topic", "/queue");
}
}
@Configuration
public static class DefaultWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.csrf()
.ignoringAntMatchers("/charm-chat/**")
.and()
.headers()
.frameOptions().sameOrigin()
.and()
.httpBasic();
}
@Bean
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
}
ERROR:
WebSocket connection to 'ws://localhost:8080/charm-chat' failed: Error during WebSocket handshake: Unexpected response code: 200
I'd suggest moving out try_connect() call from service constructor, and leaving method public. Executing any code, that isn't constructing object, inside constructor is considered a bad practice, and forces developers to implement some wierd walkarounds.
Consider situation when your websocket server implements csrf token protection(Default springboot security settings for example), and to connect you need to retrive csrf token through http to include it in stomp header.
You need to delay try_connect() until you get and set that stomp header, but StompService calls it automatically on constructor.
So there we need first walkaround, you extend StompService, and override try_connect() to call super.try_connect() when you get http response.
But! You can't just inject Http through constructor, or use setters because super constructor always have to be first statement. And so you need another walkaround. (I extended StompConfig and passed Http through it, and can't really think of any cleaner solution)
env:
ionic 3.6
ionic-cli 3.7
@stomp/ng2-stompjs": "^0.4.2"
log:
Module build failed: Error: ENOENT: no such file or directory, open 'xxxxxx/node_modules/@stomp/ng2-stompjs/index.js'
how to ?
Hi,
When I'm trying to package my module using ng2-stompjs with ng-packagr, I get the following error.
BUILD ERROR
Could not resolve './src/stomp.service' from node_modules/@ stomp/ng2-stompjs/index.ts
Error: Could not resolve './src/stomp.service' from node_modules/@ stomp/ng2-stompjs/index.ts
at error (/home/christof/development/cover/components/socket-commands/node_modules/rollup/dist/rollup.js:185:14)
at then.resolvedId (/home/christof/development/cover/components/socket-commands/node_modules/rollup/dist/rollup.js:10062:8)
Any idea ?
Hi. I'm facing this error when I connect with stomp of rabbitmq.
I have tested in more servers, some working well, some failed. Pls help.
VM14753:161 WebSocket connection to 'ws://rabbitmq.xxxx.com:15674/ws' failed: Error during WebSocket handshake: Sent non-empty 'Sec-WebSocket-Protocol' header but no response was received
ng2-stompjs version: 0.4.2
@angular/: 2.4.0
Hello,
I'm trying to involve CI providers to run the tests for my Angular 4 application.
The problem is, that while testing I don't have any STOMP broker running.
So the application tries to reconnect to the websocket server periodically.
Is there any option to somehow mock the stomService so that the tests pass?
This is the code I have so far:
app.component.spec.ts
import { TestBed, async } from '@angular/core/testing';
import { AppComponent } from './app.component';
import { WsClientComponent } from "./components/ws-client/ws-client.component";
import { StompService, StompConfig } from "@stomp/ng2-stompjs";
import { WS_STOMP_CONFIGURATION } from "./configs/ws-stomp-config";
describe('AppComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [
AppComponent,
WsClientComponent
],
providers: [
StompService,
{
provide: StompConfig,
useValue: WS_STOMP_CONFIGURATION
}
]
}).compileComponents();
}));
it('should create the app', async(() => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.debugElement.componentInstance;
expect(app).toBeTruthy();
}));
it(`should have as title 'app'`, async(() => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.debugElement.componentInstance;
expect(app.title).toEqual('app');
}));
});
ws-client.component.spec.ts
import { WsClientComponent } from './ws-client.component';
import { StompService, StompConfig } from "@stomp/ng2-stompjs";
import { WS_STOMP_CONFIGURATION } from "../../configs/ws-stomp-config";
describe('WsClientComponent', () => {
let component: WsClientComponent;
let fixture: ComponentFixture<WsClientComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ WsClientComponent ],
providers: [
StompService,
{
provide: StompConfig,
useValue: WS_STOMP_CONFIGURATION
}
]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(WsClientComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
Thanks a lot!
My StompService
sends an Authorization
header with a JWT token. But when the token is expired the server will return an error:
<<< ERROR message:Failed to send message to ExecutorSubscribableChannel[clientInboundChannel]; nested exception is org.springframework.security.authentication.CredentialsExpiredException\c Provided token is expired content-length:0
Of course this is expected behavior. But I am not able to catch the error and the StompService
won't reconnect after this error, it only reconnects when the web socket is interrupted.
I would like to catch the error so I can refresh the token. Is this possible?
I have the following pure javascript code where I can connect successfully to my spring boot with stomp using websocket in the same port:
function connect() {
var socket = new SockJS('/gs-guide-websocket');
stompClient = Stomp.over(socket);
stompClient.connect({}, function (frame) {
setConnected(true);
console.log('Connected: ' + frame);
stompClient.subscribe('/topic/greetings', function (greeting) {
showGreeting(JSON.parse(greeting.body).content);
});
});
}
The problem is that I'm trying to connect using a new Angular 4 app, and can't figure out how to switch the example above to work with ng2-stompjs.
I tried to configure it as the following:
const stompConfig: StompConfig = {
// Which server?
url: 'ws://127.0.0.1:8080/gs-guide-websocket',
// Headers
// Typical keys: login, passcode, host
headers: {
},
// How often to heartbeat?
// Interval in milliseconds, set to 0 to disable
heartbeat_in: 0, // Typical value 0 - disabled
heartbeat_out: 20000, // Typical value 20000 - every 20 seconds
// Wait in milliseconds before attempting auto reconnect
// Set to 0 to disable
// Typical value 5000 (5 seconds)
reconnect_delay: 5000,
// Will log diagnostics on console
debug: true
};
but I get:
stomp.service.ts:271 Thu Jul 20 2017 13:20:12 GMT+0300 "Whoops! Lost connection to ws://127.0.0.1:8080/gs-guide-websocket"
stomp.service.ts:271 Thu Jul 20 2017 13:20:12 GMT+0300 "Error: Whoops! Lost connection to ws://127.0.0.1:8080/gs-guide-websocket"
stomp.service.ts:271 Thu Jul 20 2017 13:20:12 GMT+0300"STOMP: scheduling reconnection in 5000ms"
Any idea what's wrong with my configuration? Why the pure javascript code works and I'm unable to connect with my Angular 4 app using this library?
Hi,
I just updated to 0.4.1 and saw that StompConfigService was removed. I have seen the demo and the configuration is hard coded into app.module.ts. This does not cause any problem as the service is initialized without any race conditions.
In a real life application configurations are in json files. How can I wait until loading of configs is done and then initialize the StompService(s) using angular dependency injection?
Thanks
Getting this error while trying to compile code using Angular 5, and Angular CLI 1.5.
ERROR in ./node_modules/@stomp/ng2-stompjs/index.ts Module build failed: Error: D:\dev-tracker-app\tracker-app-admin\tracker-app-ng\node_modules\@stomp\ng2-stompjs\index.ts is not part of the compilatio n output. Please check the other error messages for details. at AngularCompilerPlugin.getCompiledFile (D:\dev-tracker-app\tracker-app-admin\tracker-app-ng\node_modules\@ngtools\webpack\src\angular_compiler_p lugin.js:629:23) at plugin.done.then (D:\dev-tracker-app\tracker-app-admin\tracker-app-ng\node_modules\@ngtools\webpack\src\loader.js:467:39) at process._tickCallback (internal/process/next_tick.js:103:7) @ ./src/app/admin/services/websocket.service.ts 8:0-62 @ ./src/app/admin/admin.module.ts @ ./src/$$_lazy_route_resource lazy @ ./node_modules/@angular/core/esm5/core.js @ ./src/main.ts @ multi webpack-dev-server/client?http://0.0.0.0:0 ./src/main.ts
I am providing the configuration in my project using SockJS. Should this configuration be started in AppModule? Is it possible to use more than one StompConfig in one module?
It seems there is a problem sending text messages to ActiveMQ broker.
According to this http://activemq.apache.org/stomp.html if content-length header is included it sends BytesMessage, if not - TextMessage. The content-length header is included by default. In order to exclude it it has to be defined like that
this.stompService.publish(queueName, message,
{
['content-length']:false
});
because stomjs checks if it true/false:
skipContentLength = if (@headers['content-length'] == false) then true else false
It is not possible to set content-length to false because StompHeaders is defined like this:
export declare type StompHeaders = {
[key: string]: string;
}
It must have string value.
If i restart my backend I get this output on the client:
Thu Feb 01 2018 15:02:59 GMT+0100 (CET) "Whoops! Lost connection to omissis/ws"
ng2-stompjs.es5.js:58 Thu Feb 01 2018 15:02:59 GMT+0100 (CET) "Error: Whoops! Lost connection to omissis/ws"
ng2-stompjs.es5.js:58 Thu Feb 01 2018 15:02:59 GMT+0100 (CET) "STOMP: scheduling reconnection in 5000ms"
ng2-stompjs.es5.js:58 Thu Feb 01 2018 15:03:04 GMT+0100 (CET) "STOMP: attempting to reconnect"
ng2-stompjs.es5.js:58 Thu Feb 01 2018 15:03:04 GMT+0100 (CET) "Opening Web Socket..."
But it stucks to this state: Opening Web Socket... no more info
It seems to me that in case of lost connection, the library can reconnect but cannot re-subscribe all the topics automatically, is this true?
Any code coming soon on this repo?
I have spring backend and Angular 2 frontend with websocket communication between. Part of my app have to be accessible anonymously, and other part requires authentication. To achieve this I'd have to remake websocket connection after authentication, because spring security "hands over" authentication to websocket on Upgrade request.
I can disconnect using .disconnect() method, but how can I reconnect after?
I would like to be able to disable the websocket information that is logged in console because it is creating a lot of verbose output for my app and making it difficult to see other things in console. Everytime a new subscription message comes in I get an output of the payload and header details, etc. Is there a way to disable this?
in this case continuously "Will try sending queued messages" working. Do you have any idea why the stomp server did not write the message?
Publish method is missing message headers array. I want to set the headers when I send message but there is not any way to do it as the overload accepts only queue name and message.
Hi,
I saw this "Compatibility
There were compatibility issues reported, so this project has now switched to source distribution. In case it does not work for your setup, please raise a ticket."
Can you explain further please?
Hi
I have updated my project to angular 5 and I am using "@stomp/ng2-stompjs": "0.6.0"
I noticed memory leak. My scenario involves receiving data from server of 150KB each message every 2 seconds. I isolated memory leak to ng2-stompjs library. What I did was removed every other code and memory leak is present. Once I remove ng2-stompjs and reading the data from json file and refreshing it using a timer, memory leak goes away.
Thanks
Hi,
StompService is coupled on StompConfigService which in my opinion is not good. In a large enterprise system where several vhosts/username/password are used the following problems might occur :
Hi,
Using one instance of a StompService can I subscribe to multiple queues?
When I try to use this library in ionic I get this error
Module build failed: Error: ENOENT: no such file or directory, open 'C:\workspace\PruebaIonic\node_modules@stomp\ng2-stompjs\index.js' at Error (native)
In angular 2 this work fine...
Thanks
So I have discovered a weird bug:
I have subscribed to messages like this inside an injectible service:
this._stompMessages = this._stompService.subscribe('/user/queue/messages');
this.subscription = this._stompMessages.subscribe(this.on_next);
When the on_next method gets called I want to push something to a BehaviorSubject that is a property of this service. So inside on_next I do something like this:
this._messages.next(this._messages.getValue().concat(value));
This causes an UNSUBSCRIBE command, but why?
"Stop watching connection state (for /user/queue/messages)" ng2-stompjs.es5.js:58
"Will unsubscribe from /user/queue/messages at Stomp" ng2-stompjs.es5.js:58
">>> UNSUBSCRIBE id:sub-0
Can you please add support for Virtual Host as rabbitmq support this functionality.
I am getting a weird error which appears only in Chrome (Version - 59.0.3071.115 (Official Build) (64-bit)), but works properly on Mozilla Firefox. This is the error I am getting, "Error during WebSocket handshake: 'Sec-WebSocket-Protocol' header must not appear more than once in a response". It will be really helpful to get some inputs, and also to know if anyone has faced such issues.
I am using ng2-stompjs in a Angular 4 project created with Angular-CLI.
i got a issue .
Error: ./node_modules/@stomp/ng2-stompjs/src/stomp.service.ts Module build failed: TypeError: Cannot read property 'content' of undefined at Object.optimizationLoader (/Users/sjbwybls/Documents/gitrepo/ionic-ng2-stompjs/node_modules/@ionic/app-scripts/dist/webpack/optimization-loader-impl.js:14:24) at Object.loader (/Users/sjbwybls/Documents/gitrepo/ionic-ng2-stompjs/node_modules/@ionic/app-scripts/dist/webpack/optimization-loader.js:5:32) @ ./src/app/app.module.ngfactory.js 45:0-65 @ ./src/app/main.ts,./node_modules/@stomp/ng2-stompjs/src/stomp.config.ts Module build failed: TypeError: Cannot read property 'content' of undefined at Object.optimizationLoader (/Users/sjbwybls/Documents/gitrepo/ionic-ng2-stompjs/node_modules/@ionic/app-scripts/dist/webpack/optimization-loader-impl.js:14:24) at Object.loader (/Users/sjbwybls/Documents/gitrepo/ionic-ng2-stompjs/node_modules/@ionic/app-scripts/dist/webpack/optimization-loader.js:5:32) @ ./src/app/app.module.ngfactory.js 66:0-64 @ ./src/app/main.ts,./node_modules/@stomp/ng2-stompjs/index.ts Module build failed: TypeError: Cannot read property 'content' of undefined at Object.optimizationLoader (/Users/sjbwybls/Documents/gitrepo/ionic-ng2-stompjs/node_modules/@ionic/app-scripts/dist/webpack/optimization-loader-impl.js:14:24) at Object.loader (/Users/sjbwybls/Documents/gitrepo/ionic-ng2-stompjs/node_modules/@ionic/app-scripts/dist/webpack/optimization-loader.js:5:32) @ ./src/app/app.module.js 15:0-63 @ ./src/app/app.module.ngfactory.js @ ./src/app/main.ts [DEBUG] Error: ./node_modules/@stomp/ng2-stompjs/src/stomp.service.ts Module build failed: TypeError: Cannot read property 'content' of undefined at Object.optimizationLoader (/Users/sjbwybls/Documents/gitrepo/ionic-ng2-stompjs/node_modules/@ionic/app-scripts/dist/webpack/optimization-loader-impl.js:14:24) at Object.loader (/Users/sjbwybls/Documents/gitrepo/ionic-ng2-stompjs/node_modules/@ionic/app-scripts/dist/webpack/optimization-loader.js:5:32) @ ./src/app/app.module.ngfactory.js 45:0-65 @ ./src/app/main.ts,./node_modules/@stomp/ng2-stompjs/src/stomp.config.ts Module build failed: TypeError: Cannot read property 'content' of undefined at Object.optimizationLoader (/Users/sjbwybls/Documents/gitrepo/ionic-ng2-stompjs/node_modules/@ionic/app-scripts/dist/webpack/optimization-loader-impl.js:14:24) at Object.loader (/Users/sjbwybls/Documents/gitrepo/ionic-ng2-stompjs/node_modules/@ionic/app-scripts/dist/webpack/optimization-loader.js:5:32) @ ./src/app/app.module.ngfactory.js 66:0-64 @ ./src/app/main.ts,./node_modules/@stomp/ng2-stompjs/index.ts Module build failed: TypeError: Cannot read property 'content' of undefined at Object.optimizationLoader (/Users/sjbwybls/Documents/gitrepo/ionic-ng2-stompjs/node_modules/@ionic/app-scripts/dist/webpack/optimization-loader-impl.js:14:24) at Object.loader (/Users/sjbwybls/Documents/gitrepo/ionic-ng2-stompjs/node_modules/@ionic/app-scripts/dist/webpack/optimization-loader.js:5:32) @ ./src/app/app.module.js 15:0-63 @ ./src/app/app.module.ngfactory.js @ ./src/app/main.ts at new BuildError (/Users/sjbwybls/Documents/gitrepo/ionic-ng2-stompjs/node_modules/@ionic/app-scripts/dist/util/errors.js:16:28) at /Users/sjbwybls/Documents/gitrepo/ionic-ng2-stompjs/node_modules/@ionic/app-scripts/dist/preprocess.js:18:21 at <anonymous> at process._tickCallback (internal/process/next_tick.js:188:7)
You can test this repo!
With bash ionic build --prod
I just saw this release. Can you provide more info on what it is actually?
Thanks
After the connection:
CONNECT
data:[object Object]
administrator:false
possibleExtraGastRoles:
gestoreVenditaIAM:false
presentatoreIAM:false
notaioIAM:true
altroProfessionistaIAM:false
cancelliereIAM:false
giudiceIAM:false
collaboratoreIAM:false
name:100
accept-version:1.2,1.1,1.0
heart-beat:20000,0
I have this response:
CONNECTED
server:RabbitMQ/3.6.12
session:session-qxiL9CCP9KcgoQ3lMjbjHA
heart-beat:0,20000
version:1.2
user-name:grog
Is there a way to get the "session" in angular 4?
I'm running angular 4.0.0. and the latest ng-stomp 0.3.5 with webpack and am getting the following unexpected token export when I load the application in the browser. Obviously export is es6 only
export { StompService, StompState } from './src/stomp.service';
export { StompConfigService } from './src/stomp-config.service';
Any help debugging this issue to get it to compile correctly?
In our @angular/cli 1.2.1 project with @stomp/ng2-stompjs 0.4.2 the client ignores the url in StompConfig and connects to the webpack development server instead. Providing an existing SockJS connection doesn't have this issue. I am assuming this would only occur in development.
url: 'ws://localhost:4200/ws/service'
-> connects to http://localhost:4200/sockjs-node/info?t=1500962165906
url: new SockJS('/ws/service')
-> connects to http://localhost:4200/ws/service/info?t=1500962165906
Thanks for your effort
Let's change the title from
"Angular2 and Angualr4 service for Stomp over Webscokets"
to
"Angular2 and Angular4 service for Stomp over Websockets"
Hi,
I can see that the angular version used is 4.0.0. Can you update to latest angular version?
Thanks
ERROR in ./node_modules/ng2-stomp-service/dist/stomp.service.ts
Module build failed: Error: /Users/Documents/trunow/trunowadmin_website_angular/node_modules/ng2-stomp-service/dist/stomp.service.ts is missing from the TypeScript compilation. Please make sure it is in your tsconfig via the 'files' or 'include' property.
The missing file seems to be part of a third party library. TS files in published libraries are often a sign of a badly packaged library. Please open an issue in the library repository to alert its author and ask them to package the library using the Angular Package Format (https://goo.gl/jB3GVv).
at AngularCompilerPlugin.getCompiledFile (/Users/inarenedpuganti/Documents/trunow/trunowadmin_website_angular/node_modules/@ngtools/webpack/src/angular_compiler_plugin.js:653:23)
at plugin.done.then (/Users/Documents/trunow/trunowadmin_website_angular/node_modules/@ngtools/webpack/src/loader.js:467:39)
at
at process._tickCallback (internal/process/next_tick.js:188:7)
@ ./node_modules/ng2-stomp-service/index.js 2:20-51
@ ./src/app/app.module.ts
@ ./src/main.ts
@ multi webpack-dev-server/client?http://0.0.0.0:0 ./src/main.ts
Currently this library is distributed as ts files. We need to package it as compiled JS.
I needed to perform an update of all angular modules for my project (Because of 'Version mismatching' error). Then I had to update angular-cli. After that, running ng serve
yielded this error
ERROR in ./node_modules/@stomp/ng2-stompjs/index.ts
Module build failed: Error: /home/tichomir/web-technologies/angularjs/rota-second/client/node_modules/@stomp/ng2-stompjs/index.ts is missing from the TypeScript compilation. Please make sure it is in your tsconfig via the 'files' or 'include' property.
The missing file seems to be part of a third party library. TS files in published libraries are often a sign of a badly packaged library. Please open an issue in the library repository to alert its author and ask them to package the library using the Angular Package Format (https://goo.gl/jB3GVv).
at AngularCompilerPlugin.getCompiledFile (/home/tichomir/web-technologies/angularjs/rota-second/client/node_modules/@ngtools/webpack/src/angular_compiler_plugin.js:653:23)
at plugin.done.then (/home/tichomir/web-technologies/angularjs/rota-second/client/node_modules/@ngtools/webpack/src/loader.js:467:39)
at
at process._tickCallback (internal/process/next_tick.js:188:7)
@ ./src/app/app.module.ts 23:20-49
@ ./src/main.ts
@ multi webpack-dev-server/client?http://0.0.0.0:0 ./src/main.ts
how to send authentication header before connect?
Hi,
Before the question I would like to thank you for the good work with this library.
I'm doing a RPC like implementation, I'm passing the reply-to header in the sending message. I also receive a log message saying that the reply message arrived, but that it was unhandled.
Is it possible to set a callback for temporary queues?
Thank you.
how to custom settings the stompConfig's header , get the token when user login in , i want to transform the token to the stompConfig's header , How to implement ? thanks
Can try_connect not called from constructor.
There are cases that application logic need to finish first before connecting to broker.
Currently as soon as the instance of the StompService is initialized it is also connected
Need to be able to call connect whenever we want not when instance is created.
Very interested in porting my stompjs implementation over to use this lib. I am using it with SockJS like this:
var socket = new SockJS(this.stompEndpoint);
this.stompClient = Stomp.over(socket);
this.stompClient.connect({}, function (frame) {}
I see from the examples that the url
used is a standard web-socket. Can I use SockJS with this in any way? If so, any pointers would help me a lot!
Hi,
nice project. It is possible to wait for the subscriptions after reconnect before sending the queued data.
I think it is better to implement reaction (bi direction channels).
In your new implementation, it seems that resubscription and sending are at the same time. Or i dint see the point?
Lexanius
I'm trying to use a delayed initialization of Stomp.
I followed the instructions as best as I could understand them and provided only StompRService in the app.module.ts file.
In my app.module.ts:
// Stomp Import
import {StompRService} from '@stomp/ng2-stompjs';
...
providers: [
LoginService,
StompRService
]
In my login component:
import { Router } from '@angular/router';
import { Component, OnInit } from '@angular/core';
import { NgForm } from '@angular/forms';
import { LoginService } from './../../services/login.service';
import { Observable } from 'rxjs/Observable';
import { StompRService } from "@stomp/ng2-stompjs";
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./../../../sass/pages/login.component.scss']
})
export class LoginComponent implements OnInit {
error = '';
config = {
url: 'ws://localhost:8080/websocket',
// Headers
headers: {
username: this.loginService.getUsername(),
password: this.loginService.getPassword(),
token: this.loginService.getToken()
},
// How often to heartbeat?
// Interval in milliseconds, set to 0 to disable
heartbeat_in: 0, // Typical value 0 - disabled
heartbeat_out: 20000, // Typical value 20000 - every 20 seconds
// Wait in milliseconds before attempting auto reconnect
// Set to 0 to disable
// Typical value 5000 (5 seconds)
reconnect_delay: 5000,
// Will log diagnostics on console
debug: true
};
constructor(private loginService: LoginService, private router: Router,
private _stompService: StompRService) { }
/**
* This method is used to call login service to verify username and password.
* For more info refer to loginService component.
* @param form this form object can be used to get values from HTML inputs.
*/
loginUser(form: NgForm) {
this.loginService.login(form.value.username, form.value.password)
.subscribe(result => {
if (result === true) {
this.router.navigate(['home/admin']);
this.initStomp();
} else {
// login failed
this.error = 'Username or password is incorrect';
}
}, error => {
this.error = error;
});
}
public initStomp() {
this._stompService.config = this.config;
this._stompService.initAndConnect();
}
ngOnInit() { }
}
However, when I do this, my angular app won't let anything load. It says that there is no provider for StompService, but if I'm trying to use StompRService, why would it even check for StompService?
Is there something I'm missing?
Could you provide a more thorough example of how to set up a delayed stomp initalization using StompRService?
Does the library support protobuf or just json data?
I am using RabbitMQ webstomp. Have successfully conigured the broker to use TLS/SSL.
When I try to connect though to it using the ng2-stompjs I get
WebSocket connection to 'wss://gw-dev.test.com:5671/ws' failed: Error during WebSocket handshake: net::ERR_CONNECTION_RESET
WebSocket connection to 'wss://gw-dev.test.com:5671/ws' failed: Error during WebSocket handshake: net::ERR_INVALID_HTTP_RESPONSE
I am simply trying to send an authorization header to the websocket(No SockJS, just websocket) on handshake.
It isn't working when I am building with --prod
.
The token is only sent without the --prod
.
Console output:
Normal
Production
The headers just aren't sent when --prod
.
Why doesn't the build with --prod
work?
--aot
also doesn't work.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.