class Program
{
static void Main(string[] args)
{
Console.WriteLine("Press any key to start the WebSocketServer!");
Console.ReadKey();
Console.WriteLine();
var appServer = new WebSocketServer();
//Setup the appServer
if (!appServer.Setup(2012)) //Setup with listening port
{
Console.WriteLine("Failed to setup!");
Console.ReadKey();
return;
}
appServer.NewSessionConnected = delegate(WebSocketSession session)
{
Console.WriteLine("新玩家加入: " session.SessionID);
session.Send("新玩家加入: " session.SessionID);
};
appServer.SessionClosed = delegate(WebSocketSession session, CloseReason value)
{
Console.WriteLine("玩家离开: " session.SessionID);
session.Send("玩家离开: " session.SessionID);
};
appServer.NewMessageReceived = delegate(WebSocketSession session, string value)
{
Console.WriteLine(session.SessionID "说话: " value);
session.Send(session.SessionID "说话: " value);
};
Console.WriteLine();
//Try to start the appServer
if (!appServer.Start())
{
Console.WriteLine("Failed to start!");
Console.ReadKey();
return;
}
Console.WriteLine("The server started successfully, press key 'q' to stop it!");
while (Console.ReadKey().KeyChar != 'q')
{
Console.WriteLine();
continue;
}
//Stop the appServer
appServer.Stop();
Console.WriteLine();
Console.WriteLine("The server was stopped!");
Console.ReadKey();
}
}
在 Unity中的实例代码:
using System;
using UnityEngine;
using BestHTTP;
using BestHTTP.WebSocket;
public class WebSocketSample : MonoBehaviour
{
#region Private Fields
///
/// The WebSocket address to connect
///
string address = "ws://127.0.0.1:2012";// "ws://echo.websocket.org";
///
/// Default text to send
///
string msgToSend = "Hello World!";
///
/// Debug text to draw on the gui
///
string Text = string.Empty;
///
/// Saved WebSocket instance
///
WebSocket webSocket;
///
/// GUI scroll position
///
Vector2 scrollPos;
#endregion
#region Unity Events
void OnDestroy()
{
if (webSocket != null)
webSocket.Close();
}
void OnGUI()
{
scrollPos = GUILayout.BeginScrollView(scrollPos);
GUILayout.Label(Text);
GUILayout.EndScrollView();
GUILayout.Space(5);
GUILayout.FlexibleSpace();
address = GUILayout.TextField(address);
if (webSocket == null && GUILayout.Button("Open Web Socket"))
{
// Create the WebSocket instance
webSocket = new WebSocket(new Uri(address));
if (HTTPManager.Proxy != null)
webSocket.InternalRequest.Proxy = new HTTPProxy(HTTPManager.Proxy.Address, HTTPManager.Proxy.Credentials, false);
// Subscribe to the WS events
webSocket.OnOpen = OnOpen;
webSocket.OnMessage = OnMessageReceived;
webSocket.OnClosed = OnClosed;
webSocket.OnError = OnError;
// Start connecting to the server
webSocket.Open();
Text = "Opening Web Socket...\n";
}
if (webSocket != null && webSocket.IsOpen)
{
GUILayout.Space(10);
GUILayout.BeginHorizontal();
msgToSend = GUILayout.TextField(msgToSend);
if (GUILayout.Button("Send", GUILayout.MaxWidth(70)))
{
Text = "Sending message...\n";
// Send message to the server
webSocket.Send(msgToSend);
}
GUILayout.EndHorizontal();
GUILayout.Space(10);
if (GUILayout.Button("Close"))
{
// Close the connection
webSocket.Close(1000, "Bye!");
}
}
}
#endregion
#region WebSocket Event Handlers
///
/// Called when the web socket is open, and we are ready to send and receive data
///
void OnOpen(WebSocket ws)
{
Text = string.Format("-WebSocket Open!\n");
}
///
/// Called when we received a text message from the server
///
void OnMessageReceived(WebSocket ws, string message)
{
Text = string.Format("-Message received: {0}\n", message);
}
///
/// Called when the web socket closed
///
void OnClosed(WebSocket ws, UInt16 code, string message)
{
Text = string.Format("-WebSocket closed! Code: {0} Message: {1}\n", code, message);
webSocket = null;
}
///
/// Called when an error occured on client side
///
void OnError(WebSocket ws, Exception ex)
{
string errorMsg = string.Empty;
if (ws.InternalRequest.Response != null)
errorMsg = string.Format("Status Code from Server: {0} and Message: {1}", ws.InternalRequest.Response.StatusCode, ws.InternalRequest.Response.Message);
Text = string.Format("-An error occured: {0}\n", (ex != null ? ex.Message : "Unknown Error " errorMsg));
webSocket = null;
}
#endregion
}