Я собираюсь реализовать клиент сокета для единства3D на C#, который подключается к signalr. Вот мой код:Реализовать соединение сокета для unique3d и signalr
public void StartClient()
{
try
{
IPHostEntry ipHostInfo = Dns.GetHostEntry("http://www.MYURL.com/signalr/hubs");
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint remoteEP = new IPEndPoint(ipAddress, port);
// Create a TCP/IP socket.
Socket client = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
// Connect to the remote endpoint.
client.BeginConnect(remoteEP,
new AsyncCallback(ConnectCallback), client);
client.Shutdown(SocketShutdown.Both);
client.Close();
}
catch (Exception e)
{
print(e.ToString());
}
}
private void ConnectCallback(IAsyncResult ar)
{
try
{
// Retrieve the socket from the state object.
Socket client = (Socket)ar.AsyncState;
// Complete the connection.
client.EndConnect(ar);
print("Socket connected to "+client.RemoteEndPoint.ToString());
// Signal that the connection has been made.
//connectDone.Set();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
Но когда звоню StartClient(), он будет бросать это:
System.Net.Sockets.SocketException: No such host is known.
на стороне сервера каждая вещь правильная и страница HTML, которая обрабатывает signalr, правильно работает на основе браузеров. Я собираюсь реализовать свой собственный клиент для единства, но он не работает ..
я теперь, что я должен послать GET запрос что-то вроде этого:
GET /signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22chapter3hub%22%7D%5D&_=142051 HTTP/1.1
Тогда я должен получить ConnectionID и ConnectionToken от ответа из выше запроса и отправьте сообщение Reqeust снова разрешить пользователю:
POST /signalr/connect?transport=webSockets&clientProtocol=1.5&connectionToken=GaRyosG%2Fu1%2BU%2B9yusdn0lVb&connectionData=%5B%7B%22name%22%3A%22chapter3hub%22%7D%5D
Но я не знаю, как создать связь между Unity3D и signalr, который помещается в моем собственном сервере? следует ли использовать сокеты или есть способ, как длительный опрос?
Я полагаю, вы не используете реализации API-интерфейса клиента SignalR, потому что его не поддерживает Unity3d? Или я ошибаюсь? Если да, проверили ли вы https://github.com/jenyayel/SignalR.Client.20 –
Да, потому что framework3. NET Framework 2.0, я видел этот проект, но я хочу написать свою собственную библиотеку, которая делает несколько простых задач (это статично)! –
ах, так что теперь у вас есть хорошая эталонная реализация :) SignalR не является тривиальным, его использование websockets в качестве основного транспорта и возврат к другим вещам (например, длинный опрос и скрытые кадры), если ws не используется –