【发布时间】:2018-10-03 15:23:21
【问题描述】:
I SOLVED MY PROBLEM WİTH THİS CODE BLOCK var io = require('socket.io')(server, { pingInterval: 10000, pingTimeout: 5000, }).listen(server)
我正在使用 socket.io 制作聊天应用程序。但是如果我没有在 15 或 20 秒内发生事件,我的应用程序将断开与 socket.io 的连接。我想在应用关闭时断开连接
服务器端代码;
var server = http.createServer(app);
var io = require('socket.io').listen(server);
io.on('connection', function(socket){
let chatroom;
console.log("User Connected");
io.sockets.emit('connected', "12345");
socket.on('chatRoom', function(room) {
socket.join(room);
chatroom = room;
});
socket.on('messageData', function(msg){
io.sockets.in(chatroom).emit('messageData', msg);
});
socket.on('disconnect', function(msg){
console.log("User DisConnected");
});
});
客户端套接字类
import React, { Component } from 'react';
import io from "socket.io-client";
class socketio extends Component{
static socketConnect = () =>{
this.socket=io("http://xxx.xxx.xxx.xxx:3000",{jsonp:false});
}
static getSocket = () =>{
return this.socket;
}
}
export default socketio;
客户端聊天屏幕代码;
import socketio from '../Classes/socketio';
this.socket = socketio.getSocket();
this.socket.emit('chatRoom', this.state.chatID);
this.socket.on("messageData",(data) =>{
});
【问题讨论】:
-
请向我们展示客户端和服务器上的相关实际代码。您的问题本身听起来不像是一个问题,所以我们需要看看您在实际代码中做了什么。如果您向我们展示相关代码,这里关于代码的问题几乎总能得到更快、更准确的答案。
-
感谢@jfriend00 的评论,我添加了代码块
-
调用
socket.disconnect()的代码在哪里? -
此外,您似乎在
socketio类中滥用了this、静态方法和粗箭头函数。我不知道这是否会导致您的特定问题,但它确实是很糟糕的代码,很容易导致问题,并且肯定会导致对套接字实际存储位置的混淆。 -
我的问题是,如果我不发送消息并且第二个用户在 15 或 20 秒内不发送消息。服务器自动断开我的连接。
标签: node.js react-native socket.io