首页 > 代码库 > SuperSocket框架学习笔记3-构建Unity3D__WebSocket4Net客户端程序

SuperSocket框架学习笔记3-构建Unity3D__WebSocket4Net客户端程序

确保上一节服务器程序运行没有问题,否则请仔细看上一节

新建一个Unity3D项目(我的Unity3D版本是4.2.0)

1,在Unity3D内新建一个文件夹命名 Plugin

将下载的 

客户端:

WebSocket4Net  客户端必备

http://websocket4net.codeplex.com/

WebSocket4Net.dll   这个DLL复制到 Unity3D里面刚才新建的 Plugin文件夹内(注意Unity不得使用中文)

———————————

 

查看Unity下面的状态面板,确保没有红色错误提示,说明引入正确

 

2,新建一个C#文件,命名为SsocketDemo.cs

新建后 它自动 命名和 文件名一致(Unity3D里面 C#文件名和 类名一致,暂时不支持命名空间)

 

 

添加以下命名空间:

using System.ComponentModel;
using System.Text;
using System.Net.Sockets;

 

using WebSocket4Net;
using WebSocket4Net.Command;
using WebSocket4Net.Protocol;

 

具体代码如下:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
public class SsokcetDemo : MonoBehaviour {
     
    // 服务器IP地址和端口号
    private string ServerAdress ;
       
    // 玩家名字
     private string PlayName = "LIN";
    //发送的消息
        private string message ;
     
      
      //接收到 服务器发回来的消息
       
        private string ServerMessage ;
     
     
     
    void Start () {
        // 服务器IP地址和端口号
        ServerAdress = "ws://127.0.0.1:2000/";
        message = "Clients Send Message" ;
     
         
       ServerMessage = "Server Message" ;
    }
     
     
    void Update () {
        if( websocket !=null  &&  websocket.State != WebSocketState.None   )
        {
             
             Debug.Log( message );
             Debug.Log( websocket.State );
        }
         
    }
     
     
     
        
     
       public WebSocket websocket ;
        
        void OnGUI()
        {
                //绘制2个 TxtBox文本输入框
         
                PlayName = GUI.TextField(new Rect(10, 10, 100, 20), PlayName);
                message = GUI.TextArea(new Rect(10, 40, 200, 200), message);
                ServerMessage = GUI.TextArea(new Rect(10, 250, 400, 200), ServerMessage);
             
             
             //连接到服务器
               if(GUI.Button(new Rect(250, 10, 150, 40), "Client连接"))
                {
                     ClientSend();
                };
         
         
              if( websocket != null )
               {
                 //测试向服务器发送消息
                 if(GUI.Button(new Rect(250, 60, 150, 40), "SendMessageToServer"))
                    {
                         if( message.Length <1 || PlayName.Length < 1 )
                              return;
                 
                          websocket.Send("UnityClient Send" + PlayName +"Say:" + message  );
                    };
         
                 
                   //断开连接按钮
                       if(GUI.Button(new Rect(250, 120, 150, 40), "CloseSocket"))
                      {
                       websocket.Close();
                       websocket = null;
                      };
                  }
 
            }
            public void ClientSend()
              {
               websocket = new WebSocket( ServerAdress);
                websocket.Opened += new EventHandler(websocket_Opened);
          //   websocket.Error += new EventHandler<ErrorEventArgs>(websocket_Error);
               websocket.Closed += new EventHandler(websocket_Closed);
                 websocket.MessageReceived += new EventHandler<MessageReceivedEventArgs>( websocket_MessageReceived  );
                 
                    websocket.Open();
             }
     
         private void websocket_Opened(object sender, EventArgs e)
          {
                    websocket.Send( PlayName +"Has Join The Game" );
           }
     
        private void websocket_MessageReceived(object sender, MessageReceivedEventArgs e)
          {
                   ServerMessage += e.Message;
           }
        
          private void websocket_Closed(object sender, EventArgs e)
          {
                   websocket.Close();
           }
     
         
     
 
     
}

  

将代码 拖放到 Main Camera上 

如图:

 

先启动 服务器程序 

 

如图:

 

 

说明服务器 启动成功!

 

在进入 Unity3D中

 

 

 

没有错误的话  会出现 下图

 

 

点击 Client连接  ,  服务器端 会如下出现消息

  

 

 

说明 连接正常    ,让我们 测试  客户端 发消息到 服务器 

在Unity3D里面第二个文本框(第一个表示玩家的名字 PlayerName ,第二个是 客户端 将要发送的消息,第三个是 服务器 相应 返回的消息 )

输入HellowSuperSocket   点击 SendMessageToServer

将会看到 如下图:

 

以上就是完整的程序例子,稍后将放出 客户端 和 服务器端的源码 

QQ:2360450496

SuperSocket官方QQ群:373076764

欢迎大家来一起研究开发这个Socket框架!

 

未完,待续......