Я пишу пользовательский сервер Websocket, используя c #. Я написал некоторый код, согласно этому руководству Mozilla. Теперь я успешно получаю рукопожатие и получаю сообщения от моего клиента, и все это работает на Chrome, но когда я пытаюсь отправить сообщение с сервера на FireFox, я получаю консольную ошибку "Соединение с ws: // localhost: 80 было прервано во время загрузки страницы ". Я отправляю закодированное сообщение, используя alghorithm с этой страницы и на стороне клиента точно то же самое с websocket echo test . Вы можете найти весь проект на GitHub
Я пытался отправить не кодирующие байты и заново открывать соединение веб-маркета каждый раз, когда я отправляю сообщение).
Как видите, сервер автоматически отправляет клиенту сообщение "Hello".
Функция процесса (новый поток для каждого клиента):
public void Process()
{
try
{
Stream = _client.GetStream();
HandShake();
while (true)
{
while (_client.Available < 3)
{
}
Byte[] bytes = new Byte[_client.Available];
Stream.Read(bytes, 0, bytes.Length);
var message = GetMessage(bytes);
if (_webSocketConverter.IsClosing(bytes[0]))
{
break;
}
message = GetMessage(bytes);
SendMessageFromServer("Hello");
}
}
catch (Exception ex)
{
throw ex;
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(ex.Message);
Console.ResetColor();
}
finally
{
_server.RemoveConnection(this._userInfo.Id);
Console.WriteLine("Client {0} disconnected from the server", this._userInfo.Id);
Close();
}
}
Функция SendMessage (EncodeMessage - алгоритм по ссылке выше, прекрасно работает с Chrome)
private void SendMessageFromServer(string message)
{
Byte[] messageByte = _webSocketConverter.EncodeMessage(message);
Stream.Write(messageByte);
}
Похоже, проблема с сервером, потому что websocket.org/echo работает с firefox.