Jump to content
  • 0

Html 5 websocket Лечение словарного поноса


Zizilk
 Share

Question

Имеется самописный сервер, решил делать клиент с использованием Html5 и его веб сокетов.

проблема. При подключении собственно как я понимаю клиент сваливает кучу служебной инфы.

При чём не куском а построчно. В виде заголовков http

GET / HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Host: 127.0.0.1:8234
Origin: http://127.0.0.1
Sec-WebSocket-Protocol: TCP
Sec-WebSocket-Key1: 18r o"86g'uu(x0 76n'm378
Sec-WebSocket-Key2: >3c62v+L 6 x H77 [52 1^8 X n]

На сервере стоит защита от неправильного формата данных, но это мне ненравится.

Пока с вебсокетами на html5 только начал разбираться, но так понимаю, если он столько отсылает при подключении, то столько же будет вместе и с полезной нагрузкой. Есть ли возможность как-то от этого их отучить?

Сервер работает по протоколу TCP, он самописный.

Edited by Zizilk
Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Имеется самописный сервер, решил делать клиент с использованием Html5 и его веб сокетов.

проблема. При подключении собственно как я понимаю клиент сваливает кучу служебной инфы.

При чём не куском а построчно. В виде заголовков http

GET / HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Host: 127.0.0.1:8234
Origin: http://127.0.0.1
Sec-WebSocket-Protocol: TCP
Sec-WebSocket-Key1: 18r o"86g'uu(x0 76n'm378
Sec-WebSocket-Key2: >3c62v+L 6 x H77 [52 1^8 X n]

На сервере стоит защита от неправильного формата данных, но это мне ненравится.

Пока с вебсокетами на html5 только начал разбираться, но так понимаю, если он столько отсылает при подключении, то столько же будет вместе и с полезной нагрузкой. Есть ли возможность как-то от этого их отучить?

Сервер работает по протоколу TCP, он самописный.

Ну во первых в примере, что вы привели http запрос старой версии протокола.

Во вторых это не просто "служебная инфа" это секретные ключи запроса для идентификации в соответствии с которыми должен ответить сервер. И естественно что они отправляются сразу, ведь это и есть http заголовки. Без них вы просто не сможете соединится.

В третьих ни от чего его не надо отучать, как я говорил эти непонятные символы как раз и есть http заголовки которые отправляются только один раз при "рукопожатии". Далее вы будите просто получаться данные в специализированном формате без каких либо заголовков.

Ну и на последок вот ссылка на последний драфт спецификации - http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-14

П.С. И в преть, выбирайте более корректное название тем.

П.С.С Кстати должна быть ещё одна строчка - тело GET запроса с 4мя байтами.

Link to comment
Share on other sites

  • 0

Простите за название темы. В принципе нашёл сам уже что это хендшейк протокла http, но мне нужен чистый TCP у меня же не вебсервер.

Проблема в том что http мне не нужен. По принципу передачи нужен аналог телнета, что ли, те просто подключаться писать в сокет и читать из него.

Заводить php прослойку и работать с ней через аякс можно, но неудобно так как он

 рвёт соединение за собой.

Ps строчка действиельно есть, но выковыривать из лога весь этот "мусор"(в рамках моего сервера не удобно, тк он выглядит вот так)
[code]Orion mini server version 0.45
————————————————————--
17.09.2011 21:27:36 Server <init>
INFO: Server starts
17.09.2011 21:27:36 Server <init>
INFO: Socket is open
17.09.2011 21:27:42 ServerRunnable run
INFO: new connection
17.09.2011 21:27:43 ServerRunnable parser
WARNING: Incorrect incomming data | GET / HTTP/1.1
17.09.2011 21:27:43 ServerRunnable parser
INFO: Send to user (fail), used 3 ms
17.09.2011 21:27:43 ServerRunnable parser
WARNING: Incorrect incomming data | Upgrade: WebSocket
17.09.2011 21:27:43 ServerRunnable parser
INFO: Send to user (fail), used 8 ms
17.09.2011 21:27:43 ServerRunnable parser
WARNING: Incorrect incomming data | Connection: Upgrade
17.09.2011 21:27:43 ServerRunnable parser
INFO: Send to user (fail), used 2 ms
17.09.2011 21:27:43 ServerRunnable parser
WARNING: Incorrect incomming data | Host: 127.0.0.1:8234
17.09.2011 21:27:43 ServerRunnable parser
INFO: Send to user (fail), used 3 ms
17.09.2011 21:27:43 ServerRunnable parser
WARNING: Incorrect incomming data | Origin: http://127.0.0.1
17.09.2011 21:27:43 ServerRunnable parser
INFO: Send to user (fail), used 2 ms
17.09.2011 21:27:43 ServerRunnable parser
WARNING: Incorrect incomming data | Sec-WebSocket-Protocol: TCP
17.09.2011 21:27:43 ServerRunnable parser
INFO: Send to user (fail), used 3 ms
17.09.2011 21:27:43 ServerRunnable parser
WARNING: Incorrect incomming data | Sec-WebSocket-Key1: 3j Vy60T 2yg17 n6w06%:0
17.09.2011 21:27:43 ServerRunnable parser
INFO: Send to user (fail), used 2 ms
17.09.2011 21:27:43 ServerRunnable parser
WARNING: Incorrect incomming data | Sec-WebSocket-Key2: |23 T841 " 5 71W 56
17.09.2011 21:27:43 ServerRunnable parser
INFO: Send to user (fail), used 3 ms
17.09.2011 21:27:43 ServerRunnable parser
WARNING: Incorrect incomming data |
17.09.2011 21:27:43 ServerRunnable parser
INFO: Send to user (fail), used 8 ms[/code]

Edited by Zizilk
Link to comment
Share on other sites

  • 0

Для сравнения как бы в идеале было

вот код со стороны телнета после подключения. 1 - ответ сервера, потом запрос, потом ответ итд.

1
0<>0<>00<>admin<ll>12345
1<||>0<||>13789
0<>13789<>1<>0
1<||>0<||>0<||>200<||>1<||>0<||>0<||>0<||>0<||>0<||>

Link to comment
Share on other sites

  • 0

Из браузера вы никак не получите доступ в TCP сокету, это противоречит политике безопасности. Единственный способ это через плагин.

Кстати всё таки WebSocket это не AJAX и php как минимум для него не приспособлен так как рассчитан на одно кратко временное соединение (наверно конечно и не только для этого, но для WS точно не подходит). Вообще всего то нужно сделать лёгкий http сервер способный принимать лишь Upgrade соединения и отвечать на них. После хендшейка WS можно использовать почти как TCP сокет.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy