当前位置: 首页 > 工具软件 > CometD > 使用案例 >

cometd java_angular下使用cometd

微生鸿轩
2023-12-01

import { Injectable } from '@angular/core';

declare let $:any;

@Injectable()

export class CometdService {

cometd_instance;

cometd_listener;

cometd_subcription;

callback:any;

constructor() {

}

setStatusChangedCallback(callback){

this.callback = callback;

}

public run_cometd(self){

if(this.callback==undefined){

return;

}

this.cometd_instance = new $.Cometd();

//第一步

//配置需要监听的cometd服务器地址,具体决定于你需要监听的cometd消息。

let cometdURL = location.protocol + "//" + location.host +"/cometd/cometd.msg";

this.cometd_instance.configure({

url: cometdURL,

logLevel: 'info',

connectTimeout: 3000

});

//第二步

//添加握手后回调方法,握手成功的话,添加事件订阅处理

this.cometd_listener = this.cometd_instance.addListener('/meta/handshake', (message: any) => {

if (message.successful) {

console.log('cometd,topo addListener successful');

this.cometd_instance.batch(() => {

this.subscribeStatusChanged(this.callback,self);

});

}

});

//握手

this.cometd_instance.handshake();

}

//第三步

//订阅关心的事件,此处是/statusChange/xxx,具体决定于服务器端发送的值。

private subscribeStatusChanged(callback,self) {

this.cometd_subcription = this.cometd_instance.subscribe('/statusChange/xxx', (message: any) => {

console.log('get message: ', JSON.stringify(message));

callback.call(self, message);

});

}

// private close(){

public close(){

if (this.cometd_subcription) {

this.cometd_instance.unsubscribe(this.cometd_subcription);

this.cometd_subcription = null;

}

if (this.cometd_listener) {

this.cometd_instance.removeListener(this.cometd_listener);

this.cometd_listener = null;

}

if (this.cometd_instance) {

//this.cometd_instance.reload();

this.cometd_instance.getTransport().abort();

this.cometd_instance.disconnect();

}

}

}

 类似资料: