如何在UnityEditor中正确关闭socket.io连接?

时间:2019-06-11 03:51:54

标签: node.js unity3d socket.io

这是一个简单的示例。服务器是使用node.js和socket.io开发的,而客户端是使用unity3d和BestHTTP开发的。

当我在UnityEditor中播放客户端时,一切正常,但是UnityEditor停止后,它仍通过socket.io与服务器保持连接。

我认为仍然有一个线程在后台运行。这是UnityEditor的问题吗?以及如何使其正常工作?

服务器代码:

io.on('connection', function(socket) {
    console.log('User[' + socket.id + '] connected.');
    socket.on('disconnect', () => {
        console.log('disconnect.'); 
    });
});

客户代码:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using BestHTTP;
using BestHTTP.SocketIO;

public class SocketIOClientTest : MonoBehaviour
{
    private SocketManager _manager = null;
    // Start is called before the first frame update
    void Start()
    {
        _manager = new SocketManager(new Uri("http://localhost:9314/socket.io/"));
        _manager.Socket.On("connect", (socket, packet, args) => { Debug.Log("1"); });
    }
}

1 个答案:

答案 0 :(得分:0)

BestHTTP已被正式记录下来,您一定应该阅读它。 我在项目中使用的是:

private void OnDestroy()
{
    _socket?.Disconnect();
    _socketManager?.Close();
}