.
.
: var sock = new WebSocket(url); -. , - , , :
- WebSocket, [] [2].
, WebSocket , . :
WebSocket , , .
. , , , WebSocket, . , , .
, , , .
. , , .
" " , ... , .
:
, IO, - , (, , " " ).
EDIT:
, API- Websocket DOM addEventListener.
API Websocket HTML4, - ( EventListener). :.
sock.addEventListener('message', processMessage);
sock.onmessage = processMessage;
API ( ). , , HTML4.
, addEventListener.
2:
...
, , Ruby Javascript.
Ruby - Websocket ( plezi.io).
Javascript busy-wait, Javascript () (2 ).
onmessage ( 2 ) - , .
, - ( ββ).
, , upgrade ( Iodine C, plezi.io - ).
Ruby:
require 'plezi'
class WebsocketEcho
def index
"Use Websockets"
end
def on_message data
write data
end
def on_open
write "Welcome to the WebSocket echo server."
puts "New Websocket connection opened, welcome message was sent."
end
end
Plezi.route("/", WebsocketEcho)
Iodine.threads = 1
Iodine::Rack.app = Plezi.app
Iodine.start
Javascript:
function Client(milli) {
this.ws = new WebSocket("ws" + window.document.location.href.slice(4, -1));
this.ws.client = this;
this.onopen = function (e) { console.log("Websocket opened", e); }
this.ws.onopen = function (e) { e.target.client.onopen(e); }
this.onclose = function (e) { console.log("Websocket closed", e); }
this.ws.onclose = function (e) { e.target.client.onclose(e); }
if(milli) {
var start = new Date();
var now = null;
do {
now = new Date();
} while(now - start < milli);
}
this.onmessage = function (e) { console.log(e.data); }
this.ws.onmessage = function (e) { e.target.client.onmessage(e); }
}
cl = new Client(2000);
(MacOS):
Safari 11.01 Websocket ( , , Ruby). , , .
Chrome 62.0 Websocket. 2- . , , onmessage.
FireFox 56.0 , Chrome, Websocket. 2- . .
- Windows Linux, ... , . , .