[英]how to implement socket.io in angular
我有socket.io作为可在angularJS中工作的服务,但是我试图将其重新实现为angular。中的服务。 关于如何的任何想法:
这是angularJS的实现:
angular.module('App')
.factory('socket', function ($rootScope) {
var socket = io.connect()
return {
on: function (eventName, callback) {
socket.on(eventName, function () {
var args = arguments
$rootScope.$apply(function () {
callback.apply(socket, args)
})
})
},
emit: function (eventName, data, callback) {
socket.emit(eventName, data, function () {
var args = arguments
$rootScope.$apply(function () {
if (callback) {
callback.apply(socket, args)
}
})
})
}
}
})
要创建一个socket.service.ts文件(请确保将其添加到app.module.ts的 provider部分中, 并将 服务导入使用该文件的组件中):
import { Injectable } from '@angular/core';
import * as io from 'socket.io-client';
import { Observable, Subject } from 'rxjs';
import { Observer } from 'rxjs';
const SERVER_URL = 'http://localhost:3000';
@Injectable()
export class SocketService {
private socket;
public initializeSocket() {
this.socket = io(SERVER_URL);
}
}
要实现您的监听器(可观察对象)和发射器:
public emitSomething(data) {
this.socket.emit('emittingSomething', data);
}
public onGotSomething(): Observable<data> {
return new Observable<data>((observer) => {
this.socket.on('receivedSomething', (myData: data) => observer.next(myData));
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.