Задать вопрос
@MagistrZoom

Что я делаю не так в реализации websocket server на gawk?

Имеется следующая проблема. В gawk для работы с tcp есть специальный файл "/inet/tcp/port/remotehost/remoteport". В него можно писать и из него можно читать.

Как работает WebSocket:
1) Клиент отправляет серверу хэндшейк к ключом в виде HTTP- заголовка
2) Сервер особым способом преобразует ключ клиента и отвечает аналогичным HTTP- заголовком
3) После получения ответа сервера клиент оставляет tcp коннект открытым. Теперь они могут обмениваться фреймами.

Собственно, хэндшейк проходит, сервер отправляет клиенту сообщения (и тот их даже получает), а вот когда я пытаюсь прочитать из файла (порта) ответ, то.. awk его не читает! То есть зависает на getline.
BEGIN { 
#SETTINGS
	RS = ORS = "\r\n"
	port = 8089
	host = "/inet/tcp/" port "/0/0"  # host string 

#END OF SETTINGS

	receive_handshake(header, host)
	#lets do it
	# 1) Calculate hash
	hash = calculate_hash(header["Sec-WebSocket-Key"]);
	# 2) ????
	# 3) send an answer
	answer_handshake(hash, host)


#	print frame |& host
	frame = dataframe_encode("user")
# проблема начинается здесь:
	answer = ""	
	host |& getline answer
	printf answer
	data = dataframe_decode(frame,unmasked)

	close(host)
}
  • Вопрос задан
  • 269 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы