Мы работаем со средним стеком, угловым 4 и экспрессом,
В серверной стороне используется socket.io и во внешнем интерфейсе используется ng-socket-io
Код внешнего интерфейса
import { Injectable } from '@angular/core';
import { Socket, SocketIoModule } from 'ng-socket-io';
import 'rxjs/add/operator/map';
export interface Message {
author: string,
message: string
}
@Injectable()
export class SocketService {
constructor( private mysocket : Socket ) {}
trigger(name,content){
this.mysocket.emit(name,content);
}
getFromEvent() {
return this.mysocket
.fromEvent<any>('chatRes')
.map( data => data );
}
insertActive() {
return this.mysocket
.fromEvent<any>('insertActive')
.map( data => data );
}
insertStop() {
return this.mysocket
.fromEvent<any>('insertStop')
.map( data => data );
}
liveOrderAdd() {
return this.mysocket
.fromEvent<any>('liveOrderAdd')
.map( data => data );
}
orderRemoved() {
return this.mysocket
.fromEvent<any>('orderRemoved')
.map( data => data );
}
updateLiveOrders() {
return this.mysocket
.fromEvent<any>('updateLiveOrders')
.map( data => data );
}
updateActiveOrder() {
return this.mysocket
.fromEvent<any>('updateActiveOrder')
.map( data => data );
}
tradeRates() {
return this.mysocket
.fromEvent<any>('tradeRates')
.map( data => data );
}
updateStopOrder() {
return this.mysocket
.fromEvent<any>('updateStopOrder')
.map( data => data );
}
updateHistory() {
return this.mysocket
.fromEvent<any>('updateHistory')
.map( data => data );
}
}
Код сервера
var socketio = require('socket.io');
var chatDb = require('../model/chat.js');
var users = [];
var connections = [];
module.exports.listen = function(app){
io = socketio.listen(app)
io.on('connection', function(socket){
connections.push(socket);
//Disconnect
socket.on('disconnect', function(data){
console.log(data);
users.splice(users.indexOf(socket.username), 1);
//updateUsernames();
connections.splice(connections.indexOf(socket), 1);
socket.disconnect();
});
socket.on('chatMsg',function(det){
if(det.name && det.message) {
chatDb.create(det,function(err,resData){
if(err === null) {
io.sockets.emit('chatRes',det)
}
})
}
});
socket.on('addUser',function(user){
if(user) {
users.push(user);
socket.join(user)
}
console.log(users);
});
socket.on('connectuser',function(user){
console.log(user,'testing user');
});
});
return io;
}
Нам нужно отправить ответ со стороны сервера и получить его со стороны клиента, это важный процесс в нашем приложении
Работает нормально для 1 или 2 подключения (пользователи)
но для номера пользователя он отключается постоянно
с ошибкой таймаута пинга
когда мы ищем в переполнении стека, кто-то сказал, что нужно поместить pingTimeout и pingInterval, но возникает та же проблема
var io = require('./server/helpers/socket').listen(server,{'pingInterval': 100000, 'pingTimeout': 600000})
мы изо всех сил здесь кто-нибудь помочь за это ценится
В ожидании ценного ответа Заранее спасибо