Я использую socket.io-клиент для подключения websocket
import socketIOClient from "socket.io-client";
После успешного вызова API я открываю веб-сокет и могу подключиться к сокету и получить данные,
_dashboardStoreChange(type){
if (type == 'SingleDashboard') {
let singledashboard = DashboardStore._getSingleDashboard() || {};
this.setState({ singledashboard }, ()=>{
this.setState({
dashboardName: this.state.singledashboard.data.dashboard_name,
}, ()=>{
let ns = '/dashboard';
let access_token = localStorage.getItem("auth_token");
let user_id = localStorage.getItem("user_id")+ +new Date();
let query_data = {access_token : access_token, user_id: user_id};
const socket = socketIOClient('http://192.168.0.57:9000'+ns,{query:query_data});
socket.on("dashboard_data", data => this.setState({ socketresponse: data }, ()=>{
localStorage.setItem("connected_socket_id", this.state.socketresponse.connected_socket_id);
}));
let chart_query_data = {"access_token":access_token, 'user_id' : user_id, dashboard_id: this.state.dashboard_id}
socket.emit('fetch_graph_data', chart_query_data);
socket.on('dashboard_data', data => this.setState({response: data}, ()=>{
}));
});
});
}
}
После успешного подключения к сокету я пытался отключить сокет от componentWillUnmount
, как показано ниже
componentWillUnmount() {
DashboardStore.removeListener('change', this._dashboardStoreChange);
DataConnectionStore.removeListener('change', this._dataconnectionStoreChange);
let ns = '/dashboard';
let access_token = localStorage.getItem("auth_token");
let user_id = localStorage.getItem("user_id")+ +new Date();
let query_data = {access_token : access_token, user_id: user_id};
const socket = socketIOClient('http://192.168.0.57:9000'+ns,{query:query_data});
let disconnect_query_data = {access_token : access_token, user_id: user_id}
socket.emit('disconnect_socket', disconnect_query_data);
}
Но когда я снова использую сокет api, открывается другой сокет, без вызова как я могу отключиться.
как в socket
переменной с использованием socketIOClient
Я вызываю сокет API.
после вызова componentwillunmount мне нужно отключить сокет.
Заранее спасибо.