Проще говоря, я ищу способ подключения к серверу ac # websocket с помощью socket.io на стороне клиента.
Хорошо, поэтому я попытался создать простой сервер websocket в c # с помощью httpListener и простая веб-страница со скриптом, который использовал простые веб-сокеты, и он работал хорошо, но потом я понял, что мой клиент на самом деле не работает в браузере, и веб-сокеты не работают изконтекст браузера.
Так что я немного покопался и обнаружил, что могу использовать socket.io для решения своей проблемы, но затем socket.io использует некоторые специальные веб-сокеты, которые используют какой-то уникальный протокол.Мой сервер Websocket перехватывает запрос, отправленный с socket.io, но у меня нет возможности с ним связаться.Насколько я понимаю, я должен выполнить конкретное рукопожатие, чтобы соединиться через веб-сокет, предоставленный socket.io.Вот код на данный момент:
private static readonly HttpListener httpListener = new HttpListener();
private static readonly Mutex signal = new Mutex();
public static void Main(string[] args)
{
httpListener.Prefixes.Add("http://localhost:9000/");
httpListener.Start();
while (signal.WaitOne())
{
ReceiveConnection();
}
}
public static async Task ReceiveConnection()
{
var context = await
httpListener.GetContextAsync();
if (context.Request.IsWebSocketRequest)
{
var webSocketContext = await context.AcceptWebSocketAsync(null);
var webSocket = webSocketContext.WebSocket;
var recvArr = new byte[1024];
while (webSocket.State == WebSocketState.Open)
{
await webSocket.ReceiveAsync(new ArraySegment<byte>(recvArr), CancellationToken.None);
var str = Encoding.Default.GetString(recvArr);
Console.WriteLine(str);
await webSocket.SendAsync(
new ArraySegment<byte>(Encoding.UTF8.GetBytes("Message from server ")),
WebSocketMessageType.Text, true, CancellationToken.None);
}
}
signal.ReleaseMutex();
}
}
//client
function connectToServer()
{
console.log('Function started');
var socket = io.connect('http://localhost:9000',{upgrade: false, transports: ['websocket']});
socket.on('connect', () => {
console.log(socket.connected); // true
});
//socket.send("Some Data")
socket.emit('foo',"hello");
}
Этот простой сервер веб-сокетов, который я обнаружил, на самом деле получит что-то из socket.io иногда пустую строку или иногда какой-то странный запрос, но я не могу отправить илиполучать любые полезные данные через сокет.
Пожалуйста, будьте немного более прощающими, так как это самый первый вопрос, который я задал для stackoverflow.