使用Unity3d和Node.js为android MMO创建websocket

使用Unity3d和Node.js为android MMO创建websocket,android,node.js,unity3d,websocket,mmo,Android,Node.js,Unity3d,Websocket,Mmo,我正在用Unity的免费版本开发一款android MMO android游戏。我的电脑上安装了node.js。我应该使用以下服务器客户端代码吗?因为当我尝试测试它时,我可以运行服务器端脚本,但无法确定客户端是否正在连接。另外,当我尝试构建apk时,unity给出了一个错误,说“使用System.Net.Sockets需要unity的pro版本”。请帮助 服务器端(在node.js上) 客户端(在unity c#脚本中) 最简单的方法可能是使用socket.io 首先,如果您想使用本机套接字,您

我正在用Unity的免费版本开发一款android MMO android游戏。我的电脑上安装了node.js。我应该使用以下服务器客户端代码吗?因为当我尝试测试它时,我可以运行服务器端脚本,但无法确定客户端是否正在连接。另外,当我尝试构建apk时,unity给出了一个错误,说“使用System.Net.Sockets需要unity的pro版本”。请帮助

服务器端(在node.js上)

客户端(在unity c#脚本中)


最简单的方法可能是使用socket.io


首先,如果您想使用本机套接字,您需要Unity3D Pro

但是还有其他方法来处理这个问题

你可以用其中一个。你可以在Unity资产商店找到它们。(我知道这些可能比这些资产更多)。(它们不是免费的,但比Unity pro便宜)

  • 在那之后,@ploutch提到。真的很好

    但别忘了Unity3D有自己的功能。您可以创建服务器,也可以使用它连接客户端。还有一些非常好的供应商,为您提供了额外的选择

    比如:

  • `var net = require('net');
    var tcp_server = net.createServer(function(socket)
    {
    
        socket.write('hello\n');
        socket.end('world\n');
    });
    tcp_server.listen(8000);
    console.log("Server Running...");`
    
    `using UnityEngine;
    using System.Collections;
    using System.Net.Sockets;
    using System.Text;
    public class tcpClient : MonoBehaviour 
    {
        static void Main(string[] args)
        {
            Debug.Log("start");
            TcpClient tcpClient = new TcpClient();
            tcpClient.Connect("127.0.0.1", 8000);
            Debug.Log ("Connected");
            NetworkStream clientStream = tcpClient.GetStream();
            byte[] message = new byte[4096];
            int bytesRead;
            bytesRead = 0;
    
            try
            {
                // Read up to 4096 bytes
                bytesRead = clientStream.Read(message, 0, 4096);
            }
            catch
            {
                /*a socket error has occured*/
            }
            //We have read the message.
            ASCIIEncoding encoder = new ASCIIEncoding();
            Debug.Log(encoder.GetString(message, 0, bytesRead));
            //Console.WriteLine(encoder.GetString(message, 0, bytesRead));
            tcpClient.Close();
        }
    }`