Initial import WebSocket Compression Protocol extension Permessage-deflate.
Added test cases for Permessage-delate valid parameters Added a simple websocket example with compression.
This commit is contained in:
29
examples/websocket_compress/application.e
Normal file
29
examples/websocket_compress/application.e
Normal file
@@ -0,0 +1,29 @@
|
||||
note
|
||||
description : "simple application root class"
|
||||
date : "$Date$"
|
||||
revision : "$Revision$"
|
||||
|
||||
class
|
||||
APPLICATION
|
||||
|
||||
create
|
||||
make_and_launch
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make_and_launch
|
||||
local
|
||||
l_launcher: WSF_STANDALONE_WEBSOCKET_SERVICE_LAUNCHER [APPLICATION_EXECUTION_WS]
|
||||
opts: WSF_SERVICE_LAUNCHER_OPTIONS
|
||||
do
|
||||
create {WSF_SERVICE_LAUNCHER_OPTIONS_FROM_INI} opts.make_from_file ("ws.ini")
|
||||
create l_launcher.make_and_launch (options)
|
||||
end
|
||||
|
||||
options: WSF_SERVICE_LAUNCHER_OPTIONS
|
||||
-- Initialize current service.
|
||||
do
|
||||
create {WSF_SERVICE_LAUNCHER_OPTIONS_FROM_INI} Result.make_from_file ("ws.ini")
|
||||
end
|
||||
|
||||
end
|
||||
196
examples/websocket_compress/application_execution_ws.e
Normal file
196
examples/websocket_compress/application_execution_ws.e
Normal file
@@ -0,0 +1,196 @@
|
||||
note
|
||||
description : "simple application execution"
|
||||
date : "$Date$"
|
||||
revision : "$Revision$"
|
||||
|
||||
class
|
||||
APPLICATION_EXECUTION_WS
|
||||
|
||||
inherit
|
||||
WSF_WEBSOCKET_EXECUTION
|
||||
redefine
|
||||
initialize_websocket_options
|
||||
end
|
||||
|
||||
WEB_SOCKET_EVENT_I
|
||||
|
||||
create
|
||||
make
|
||||
|
||||
feature -- Basic operations
|
||||
|
||||
execute
|
||||
local
|
||||
s: STRING
|
||||
dt: HTTP_DATE
|
||||
do
|
||||
-- To send a response we need to setup, the status code and
|
||||
-- the response headers.
|
||||
-- if request.path_info.same_string_general ("/app") then
|
||||
s := websocket_app_html (9090)
|
||||
-- else
|
||||
-- s := "Hello World!"
|
||||
-- create dt.make_now_utc
|
||||
-- s.append (" (UTC time is " + dt.rfc850_string + ").")
|
||||
-- s.append ("<p><a href=%"/app%">Websocket demo</a></p>")
|
||||
-- end
|
||||
if attached request.string_item ("exit") as s_exit and then s_exit.is_case_insensitive_equal_general ("now") then
|
||||
(create {EXCEPTIONS}).die (-1)
|
||||
end
|
||||
response.put_header ({HTTP_STATUS_CODE}.ok, <<["Content-Type", "text/html"], ["Content-Length", s.count.out]>>)
|
||||
response.set_status_code ({HTTP_STATUS_CODE}.ok)
|
||||
response.header.put_content_type_text_html
|
||||
response.header.put_content_length (s.count)
|
||||
if attached request.http_connection as l_connection and then l_connection.is_case_insensitive_equal_general ("keep-alive") then
|
||||
response.header.put_header_key_value ("Connection", "keep-alive")
|
||||
end
|
||||
response.put_string (s)
|
||||
end
|
||||
|
||||
feature -- Websocket execution
|
||||
|
||||
new_websocket_handler (ws: WEB_SOCKET): WEB_SOCKET_HANDLER
|
||||
do
|
||||
create Result.make (ws, Current)
|
||||
end
|
||||
|
||||
initialize_websocket_options (ws: WEB_SOCKET)
|
||||
-- <Precursor>
|
||||
do
|
||||
ws.configure_pcme ((create {WEB_SOCKET_PMCE_DEFLATE_SERVER_SUPPORT_FACTORY}).basic_support)
|
||||
end
|
||||
|
||||
feature -- Websocket execution
|
||||
|
||||
on_open (ws: WEB_SOCKET)
|
||||
do
|
||||
ws.put_error ("Connecting")
|
||||
-- ws.send (Text_frame, "Hello, this is a simple demo with Websocket using Eiffel. (/help for more information).%N")
|
||||
end
|
||||
|
||||
on_binary (ws: WEB_SOCKET; a_message: READABLE_STRING_8)
|
||||
do
|
||||
ws.send (Binary_frame, a_message)
|
||||
end
|
||||
|
||||
on_text (ws: WEB_SOCKET; a_message: READABLE_STRING_8)
|
||||
do
|
||||
if a_message.same_string_general ("/help") then
|
||||
-- Echo the message for testing.
|
||||
ws.send (Text_frame, "Help: available commands%N - /time : return the server UTC time.%N")
|
||||
elseif a_message.starts_with_general ("/time") then
|
||||
ws.send (Text_frame, "Server time is " + (create {HTTP_DATE}.make_now_utc).string)
|
||||
else
|
||||
-- Echo the message for testing.
|
||||
ws.send (Text_frame, a_message)
|
||||
end
|
||||
end
|
||||
|
||||
on_close (ws: WEB_SOCKET)
|
||||
-- Called after the WebSocket connection is closed.
|
||||
do
|
||||
ws.put_error ("Connection closed")
|
||||
end
|
||||
|
||||
feature -- HTML Resource
|
||||
|
||||
websocket_app_html (a_port: INTEGER): STRING
|
||||
do
|
||||
Result := "[
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
|
||||
var socket;
|
||||
|
||||
function connect(){
|
||||
|
||||
var host = "ws://127.0.0.1:##PORTNUMBER##";
|
||||
|
||||
try{
|
||||
socket = new WebSocket(host);
|
||||
message('<p class="event">Socket Status: '+socket.readyState);
|
||||
socket.onopen = function(){
|
||||
message('<p class="event">Socket Status: '+socket.readyState+' (open)');
|
||||
}
|
||||
socket.onmessage = function(msg){
|
||||
message('<p class="message">Received: '+msg.data);
|
||||
}
|
||||
socket.onclose = function(){
|
||||
message('<p class="event">Socket Status: '+socket.readyState+' (Closed)');
|
||||
}
|
||||
} catch(exception){
|
||||
message('<p>Error'+exception);
|
||||
}
|
||||
}
|
||||
|
||||
function send(){
|
||||
var text = $('#text').val();
|
||||
if(text==""){
|
||||
message('<p class="warning">Please enter a message');
|
||||
return ;
|
||||
}
|
||||
try{
|
||||
socket.send(text);
|
||||
message('<p class="event">Sent: '+text)
|
||||
} catch(exception){
|
||||
message('<p class="warning">');
|
||||
}
|
||||
$('#text').val("");
|
||||
}
|
||||
|
||||
function message(msg){
|
||||
$('#chatLog').append(msg+'</p>');
|
||||
}//End message()
|
||||
|
||||
$('#text').keypress(function(event) {
|
||||
if (event.keyCode == '13') {
|
||||
send();
|
||||
}
|
||||
});
|
||||
|
||||
$('#disconnect').click(function(){
|
||||
socket.close();
|
||||
});
|
||||
|
||||
if (!("WebSocket" in window)){
|
||||
$('#chatLog, input, button, #examples').fadeOut("fast");
|
||||
$('<p>Oh no, you need a browser that supports WebSockets. How about <a href="http://www.google.com/chrome">Google Chrome</a>?</p>').appendTo('#container');
|
||||
}else{
|
||||
//The user has WebSockets
|
||||
connect();
|
||||
}
|
||||
|
||||
});
|
||||
</script>
|
||||
<meta charset="utf-8" />
|
||||
<style type="text/css">
|
||||
body {font-family:Arial, Helvetica, sans-serif;}
|
||||
#container { border:5px solid grey; width:800px; margin:0 auto; padding:10px; }
|
||||
#chatLog { padding:5px; border:1px solid black; }
|
||||
#chatLog p {margin:0;}
|
||||
.event {color:#999;}
|
||||
.warning { font-weight:bold; color:#CCC; }
|
||||
</style>
|
||||
<title>WebSockets Client</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
<div id="container">
|
||||
<h1>WebSockets Client</h1>
|
||||
<div id="chatLog"></div>
|
||||
<input id="text" type="text" />
|
||||
<button id="disconnect">Disconnect</button>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
]"
|
||||
Result.replace_substring_all ("##PORTNUMBER##", a_port.out)
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
31
examples/websocket_compress/cert.crt
Normal file
31
examples/websocket_compress/cert.crt
Normal file
@@ -0,0 +1,31 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
27
examples/websocket_compress/priv.key
Normal file
27
examples/websocket_compress/priv.key
Normal file
@@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpQIBAAKCAQEAnePWdj7lsl/ahZVEYKvBNDszD+rMwy7rZGAZlrA3Z3pBMNJg
|
||||
FIJl3K4SnA6IPLoA73FaqjpYnHvK7pi/TizJkRtzm0sy1fvthE4AXsaRGsEiSo+1
|
||||
KQqcNhCbTBb0j16xyDIZDeK1JIdT86KO/ouPzFSKAz5Yz4MTzrRTUrRAgP95A9g5
|
||||
ZCGP8DpZBfE9ZYOwPEPdmlV4siB5l7m6x3U+G4a+GEW8r5bRAdngPs+Cy8qs/pDC
|
||||
hzdU2ITCVBrq/wvy3t7Da4Rdr3qjgnTwaJk8KVsCeDz5jdJKnk9Ddw9QiVa7eFI/
|
||||
FvTe3z7ILmAHobOXtOjAnAE9w5dRKjTRCcP3pQIDAQABAoIBAD9lu7hxGvQbrvfS
|
||||
bslOTd62IpOymROKZHRCbiPmj+iZ21FKN9AkZ9hLgSduYl/X5AZBAsG1ed0ji+Fw
|
||||
Leiq7Si52Bq0AC6R4NYuJ9Hmc19Fy4oa2AgpvX2r/193HC3xPPuAujSsIkYPnLMI
|
||||
Q9iLm2rVSzFwOGLiY/Ksz4Q24mupB6d2LvaKVlzX5p6T4E+lkHZchHwRKKDGZkjJ
|
||||
AxrvF54ff3Y11gv4oBadeMMcZbypYuttYWh558SlHDocLHyh/DJ4bz+v9pWqQBTD
|
||||
ifw09pMQwTGkbIjSYGx4n5GqqUIhQP32UK9JSTe6uLuj+HsnHVyZqUZIc2OgjBXu
|
||||
iUhpceECgYEAzPAv6FAumdd6nKhgmOA1U6QTCfCUc4WuCDSI79puVufyJU8CzvyY
|
||||
MIOEncIKTa3IT9+vdjA3jMrwqbsuRSv9O7QTaLETHj+H2ZM0dgTAJwBqENvJ7I6c
|
||||
2mOhuzFTqBSFgZI0thtvGIMVB4uB0NDmDDxO2u36tIZdCh3wxGPahY0CgYEAxTq3
|
||||
2UHanMKQP1ysxyh4YIt+2WWozzid6wc55kDQmC0tmQNEslHP67rRcAyNjaxctGoW
|
||||
KdDGXNoFDXJUEDwAb57xqsp7dbmLZiRBWyerVScAhqeInd5FBU6Z14QoQXSHukzu
|
||||
Qk9y5aVjd0gHMr99kEKb4gq9I6pSQrRV4RhUOHkCgYEAqG05oj7LncnWzgsfoGSb
|
||||
zwrITuH2z15tIfczF5S4HBpyCrF9yGkWFsDv68t+Nkr9lo9qn8KO1Nowof3g0B6P
|
||||
91JOpTrqUHC8EFeHxPqwhR01Dnfj4tNuG5nIYJTwgPGkq1Fimsu/KTEJxnKkFN6q
|
||||
QiIKWKk+4sCOlHL43h6GiD0CgYEApBPSSOqRLOJr0FqP3mtboa3LDJ6XDjViotjz
|
||||
IQuAvWiwS2A9sT+AgvJ7NAUtadQfl3O+FnF55Fr34xTevFa+Yh3PnK8wgGKohoPY
|
||||
3zWkQoXc2Sjc7cCwmNaoA3QNbU69b456lC22PzgVBHGmk2Bc3DudpTIb4WTbZGTU
|
||||
IRv1TLkCgYEAqlqBb3IXNWB2xLM8MkcAi8JA+m3LmmDYsEcPzjF7NEKPM8z0j4uT
|
||||
IoX9skpZnvgDdsN6Lg0DNkXHFwq2zdrM2aM3nOVogAWd0qwoNB1HS2Pi3Bo/xth+
|
||||
11eiPU3HZr4J48KG+6HV0FXWaa7OTfRE8oWU2UlyJvRTwhKp2QIjRe4=
|
||||
-----END RSA PRIVATE KEY-----
|
||||
20
examples/websocket_compress/server.crt
Normal file
20
examples/websocket_compress/server.crt
Normal file
@@ -0,0 +1,20 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDLjCCAhYCCQD0M/P4Fq0WWjANBgkqhkiG9w0BAQsFADBZMQswCQYDVQQGEwJB
|
||||
VTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0
|
||||
cyBQdHkgTHRkMRIwEAYDVQQDDAlsb2NhbGhvc3QwHhcNMTYxMDE3MTQ1MzM2WhcN
|
||||
MTcxMDE3MTQ1MzM2WjBZMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0
|
||||
ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMRIwEAYDVQQDDAls
|
||||
b2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDArAIQLgOC
|
||||
mpG7YsN+G/nvFCvV5yWMg97ydAb4mnDKs2yspYcPWHWVa83tBxvESlbxL2AtLqIE
|
||||
zhOwyrS9/+LcOpjdgwx/ierkJvuENCAw1YLL+qZOtA0f4F9hMLSGl4taTgTZIF9v
|
||||
IvsUCGUvkD+SfJYlFufjKV1zmZu9w4YumiaK5Og5X02ca/XvhAktKolP1cAiYJJy
|
||||
oRi9G2OX0wvdElIzNM/1y9Qk4fHKPvTJwpocrdrQsYfywEtmgRbQBh3ptexkQ+a8
|
||||
ajbgtzgWOt78ZP40p2lcVtl0C51BeyOO9qJq39Rdj226tEvxu7yvCCfvDZjjUDe2
|
||||
BM5DUie1WDszAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAEPFSvc639ObaL2w79It
|
||||
Bi4wuIXjnmzEfQzeCot4AF/ukGYpwrDGM9ZIrUzB/3lF0sMRgc9tS1bGwsEGDNyQ
|
||||
q7uXkLqrUDGUfBIeabhIQRNdEOvROBPF6nH9IFaSG7fitrMwZSrr/0i10dGLqnM6
|
||||
aKOC3DSWvgcaFNfkEWZIceZtfjBjmqTsq1wAH0ktzi8hF+DlsdFzqmigkDykaqIr
|
||||
Pig6zPxO0mhrEmvstI0W5JGlh9xyMzzKvyWvSsgRC5d9ilyGfp7BcPvOYTfW+Ktc
|
||||
lEm8ySbCgERKy/KQUgRYeU3f1ilJbmqdIg8ZPvtj7imMkIw9lXg9fLRsvia2iv7J
|
||||
eGk=
|
||||
-----END CERTIFICATE-----
|
||||
11
examples/websocket_compress/server.csr
Normal file
11
examples/websocket_compress/server.csr
Normal file
@@ -0,0 +1,11 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIIBmTCCAQICAQAwWTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx
|
||||
ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDESMBAGA1UEAwwJbG9j
|
||||
YWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLPusnlaVysrjHXpUk
|
||||
4ls2fqd0IW25VEC4Vsl0x76dpDE3u5v1bWRi6Bd8i3PnIU4lmJnQFokVjW8e4etZ
|
||||
xC+T/iNvacIxw/5unBsJ0vazrAjaPLaAEP+25weTYv8eqD/LQDcwVWvgEBGDZFOz
|
||||
RGzm9kYpS3YZjt2G20OiJqDW0wIDAQABoAAwDQYJKoZIhvcNAQELBQADgYEANfOx
|
||||
FzdJEYU+byESJsnZxDsu+c35jd49HDo6C4WjwHeadFEjqSYedyt1ymhJuhTp8+2c
|
||||
sb+l263QeeAV7+XmROYrEx9AA/QPSHCepGWEen9e2gZHUH82fxzjoJSAbsJMSpPI
|
||||
ITRMz7jLqvwZWSEjGGn1SMJ2a7PCB3AtxPJXdV4=
|
||||
-----END CERTIFICATE REQUEST-----
|
||||
27
examples/websocket_compress/server.key
Normal file
27
examples/websocket_compress/server.key
Normal file
@@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEAwKwCEC4DgpqRu2LDfhv57xQr1ecljIPe8nQG+JpwyrNsrKWH
|
||||
D1h1lWvN7QcbxEpW8S9gLS6iBM4TsMq0vf/i3DqY3YMMf4nq5Cb7hDQgMNWCy/qm
|
||||
TrQNH+BfYTC0hpeLWk4E2SBfbyL7FAhlL5A/knyWJRbn4yldc5mbvcOGLpomiuTo
|
||||
OV9NnGv174QJLSqJT9XAImCScqEYvRtjl9ML3RJSMzTP9cvUJOHxyj70ycKaHK3a
|
||||
0LGH8sBLZoEW0AYd6bXsZEPmvGo24Lc4Fjre/GT+NKdpXFbZdAudQXsjjvaiat/U
|
||||
XY9turRL8bu8rwgn7w2Y41A3tgTOQ1IntVg7MwIDAQABAoIBAGw27/24al5LhHiT
|
||||
0ysceXdPhANjDRLr6ieRBW1SCPHAbtRVMBNtYrVm1EVBzdWkz0otir41x+gc+rA8
|
||||
WeGxO/DntH4NodJsWxKD1pZ9VGs5MHpysD/aHtj9g3SqD2rc6PbyhQSSiyd3pT+u
|
||||
K27YfOxAr2/reph63jMUXoXpsI6xKKD+ouz7BfNsgXFdog8NYJimsyA9ol5IU6y5
|
||||
g8qkO1rbxVza314Sitd1QDXIb0pb1QTQvsz01iXtJpjdsSJ5NG+5s8h6sFMuoqBw
|
||||
IRbTxFnI7WyVkyRU4eZNPlj1yQzDN/TIPnFcF0D1KnhUJiYi//aJCuOMIVQNgfCq
|
||||
ufhnr6kCgYEA+hquMFCqOe/KxK7bs8gUNOjurQf1DF/n+2pSdnCPwgFtJI2kaNtZ
|
||||
B0eAkW/2QydHEEobkU4r7Yxi3enO0W+5Pxmf851/JY/HqLXHhB6HqwwMiFa8mdvw
|
||||
ePJ75h2coCSFQGwAF+c4pfmO+SVFxPJBOTpgWYftYo5GwwMCro//VM0CgYEAxTa8
|
||||
vQQ6WHmrI4K/qf7ZK+PStJvEdvX850qAF4crbvmpTtSubNdnk2WnCcWZbMiNaqWD
|
||||
Rjx376khECrNJPj2k1i4IkD0XJg58Te/snj78vaMHMds43LaDEZlTq1izQkkoaAQ
|
||||
gHc9SV8CppKwlGLESfaUoaU2G2eU8OXvU0o1z/8CgYB4mbj5D0ymV1zdbrv+ezJT
|
||||
OScuRLIDX5PLhj9xYWHQ2UM55xsqfOr3OaFjgCutwhjgX/vfG2TPTWy3OXFDSK55
|
||||
IPAiVwXipOxQDCfDK72b21mHvNuBDa9tgu//zLOj/ThMEkgRPqvwTOCGf1SfXXna
|
||||
EK45PfRYG+c/TgpTBpjG2QKBgQCvf9uL1YRakcODcWpAzILUtQQgJ3I5bwSliz3c
|
||||
MjSrqE9L0KZ8Q2Bv4gk4//hdv0dhvXLKASu2QesjaQNwQIGldFFAYk9TS0Bc8gCM
|
||||
wW9ssozTW4ECE4YJYGftEQ0Ya2eG0Vt+Bx6p+XvxYh7zncUSEPYJt20kDBSWH/jP
|
||||
RP4IXwKBgAkWzAQolIeEbIe/PNwR+KytnMTmVcdZJEz1bU5VdURSsIN/FgxOABIO
|
||||
WoCFB/nv5+hq8lul9RrRE3SBHuqvhN2RxrdlNqbcag3nhEU4haQpnYlKQoAk0+0Q
|
||||
PPdgFWXKrHQVdFxbIwO6KVL3MZ51toYaoB49EVtMkH1B6CACmMDq
|
||||
-----END RSA PRIVATE KEY-----
|
||||
30
examples/websocket_compress/server.pass.key
Normal file
30
examples/websocket_compress/server.pass.key
Normal file
@@ -0,0 +1,30 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
Proc-Type: 4,ENCRYPTED
|
||||
DEK-Info: DES-EDE3-CBC,A5A863D1830AA8FC
|
||||
|
||||
9ZqIMHcqh8uavZ8R1/N57q48VIkHGz6KItSzKUrRAPrqhRAw4UZ7RSV3OpmeN3SC
|
||||
CevtU9BTWnymInVTFKAM+cp/nLBdidBEjdT2V8XP6/FXhlvsSNBlqu1qENioR2xe
|
||||
VoOhYkpRC3DHVh3hhzShbeFtJM3iktGQ1gVwv2FyVkn1ktimclOSecYLe1dq6BqM
|
||||
HU3GX3Q5PczpJDExT3cxDrOsWtSKaznhrSzczian0b/vNohYnADHHxJCEC2Ayhtc
|
||||
AYjxNCadv6hkhiFIWuEK1bHVVK5Lj8LvODNZjSfPM4+R4ghWeEUpGr0OeF301UZp
|
||||
mYdsO9pzqIXaO6tDpBAgLAeEz1YpSqL4olO2spuFMR5vQjjeNikgrm4UjOfGfqlm
|
||||
P/x4JjJMCahMjLsIU0Cmk6fQ8FlVYZGFTLJzlP5bb5ztlEoiS/0buehDAS6qnQBD
|
||||
4Bs/KWB4OtT7hD7LHeFnylU65MwujUMMPIivB1eKN6DlFYc64FB8pJi2kWXEGggu
|
||||
5EhLK5HPxnql4iQjV2tqL6TZ3V+XEYgicosEWPSMGR0iF94zA2BQcU3+upE/vT+A
|
||||
W/LhMOkroEBffa9bgfiZ3S2/NUyyi7LSDmwPrLSgawJTN08zFPT16bZGk0P2+j+q
|
||||
WU3A2UzU7BhqswsSb1q7lorhIYFaIXpFSVGHeYfnZit3kbzt3/KJx+wiJAo2fGrK
|
||||
njrb7rpJcuafi0oN4lul7y0e8ap7iZ8Zj5nGbKu6037xlPTPXsuzBtnL2OS8/mSU
|
||||
vJkuODJotddVjYAXp9aVtT129zxxkjwCsFb3AFeuFgKXSN2ynXwGNOFohQCBxnR5
|
||||
pzVsnRT+/u4rlqv5/aefb3/R4j+NpYP8aKl3Bzv+fp880PAFtxBMPEFzNtmCbUcb
|
||||
+RGDWt8iS5GJ2cHjGj59OwvOvJ9Rf/yfw84/zYvCdMmx+GxV7qWC2eAuy5OQkyzp
|
||||
aB/qtaii2BStdI099LUBnFlmdDxn59EIdvIxyPZ5sd9Asfyd/hHs/rlCBy2jx35V
|
||||
XQiSJuw3XzV/1XqNCfUs9K4rpmSM4Rc7SJuzIN1uz38izezcA3QbR0w6/+lMV/3Z
|
||||
fjrJONGc3TFMs19WVXGPYs9/BgHkxkD2pwfNDvA6JlXEnpdP84vrQwaohOPmWbV/
|
||||
WOu9HXhkbD2pNYq93sPtMcsi+jW5gcUyod8ldIF0am80n+fpEPpyyXtwOpY26sqa
|
||||
i+E3Xq96sXb1G/Yi7B/4OI2NgDhOWHSkZmHmAdAlnK8QYPNwMsUBGZ0ox/+9ziQY
|
||||
ilWrBSXZSsn92Q+Z5j03E/pfZkBhnwGpPn6/y1uyp4FG8nL6L1RoV05nAzR+td6G
|
||||
1KBWN9iQOKfnnVbwaDKMHCE1lvcVlVe3EqsTAASp3gj7L4EzdqAyEo0u5L9wEIkw
|
||||
M5L2ztzGyXCRXCgUzQ5FBvqrM/cBYqRdKjl0OHzn4ESTKSxqvzZu8A4eB45O+QMp
|
||||
hfcLcGoPAOXDeIxQHginoSq1SDVI2xnpQspN2sL/WRjvpu5GySDBLQo1v2YJeUi5
|
||||
vMRBMWeWCFjNl/aERJO+diMD3s29QqN+TYzlwuugJIAvr58hY1+9sw==
|
||||
-----END RSA PRIVATE KEY-----
|
||||
15
examples/websocket_compress/simple.crt
Normal file
15
examples/websocket_compress/simple.crt
Normal file
@@ -0,0 +1,15 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICWDCCAcGgAwIBAgIJAJnXGtV+PtiYMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
|
||||
BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
|
||||
aWRnaXRzIFB0eSBMdGQwHhcNMTUwNDAzMjIxNTA0WhcNMTYwNDAyMjIxNTA0WjBF
|
||||
MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50
|
||||
ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
|
||||
gQDFMK6ojzg+KlklhTossR13c51izMgGc3B0z9ttfHIcx2kxra3HtHcKIl5wSUvn
|
||||
G8zmSyFAyQTs5LUv65q46FM9qU8tP+vTeFCfNXvjRcIEpouta3J53K0xuUlxz4d4
|
||||
4D6qvdDWAez/0AkI4y5etW5zXtg7IQorJhsI9TmfGuruzwIDAQABo1AwTjAdBgNV
|
||||
HQ4EFgQUbWpk2HoHa0YqpEwr7CGEatBFTMkwHwYDVR0jBBgwFoAUbWpk2HoHa0Yq
|
||||
pEwr7CGEatBFTMkwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQAi+h4/
|
||||
IgEocWkdRZBKHEcTrRxz5WhEDJMoVo9LhnXvCfn1G/4p6Un6sYv7Xzpi9NuSY8uV
|
||||
cjfJJXhtF3AtyZ70iTAxWaRWjGaZ03PYOjlledJ5rqJEt6CCn8m+JsfznduZvbxQ
|
||||
zQ6jCLXfyD/tvemB+yYEI3NntvRKx5/zt6Q26Q==
|
||||
-----END CERTIFICATE-----
|
||||
15
examples/websocket_compress/simple.key
Normal file
15
examples/websocket_compress/simple.key
Normal file
@@ -0,0 +1,15 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIICXAIBAAKBgQDFMK6ojzg+KlklhTossR13c51izMgGc3B0z9ttfHIcx2kxra3H
|
||||
tHcKIl5wSUvnG8zmSyFAyQTs5LUv65q46FM9qU8tP+vTeFCfNXvjRcIEpouta3J5
|
||||
3K0xuUlxz4d44D6qvdDWAez/0AkI4y5etW5zXtg7IQorJhsI9TmfGuruzwIDAQAB
|
||||
AoGAR5efMg+dieRyLU8rieJcImxVbfOPg9gRsjdtIVkXTR+RL7ow59q7hXBo/Td/
|
||||
WU8cm1gXoJ/bK+71YYqWyB+BaLRIWvRWb7Gdw203tu4e136Ca5uuY+71qdbVTVcl
|
||||
NQ7J+T+eAQFP+a+DdT3ZQxu9eze87SMbu6i5YSpIk2kusOECQQDunv/DQ+nc+NgR
|
||||
DF+Td3sNYUVRT9a1CWi6abAG6reXwp8MS4NobWDf+Ps4JODhEEwlIdq5qL7qqYBZ
|
||||
Gc1TJJ53AkEA0404Fn6vAzzegBcS4RLlYTK7nMr0m4pMmDMCI6YzAYdMmKHp1e6f
|
||||
IwxSmQrmwyAgwcT01bc0+A8yipcC2BWQaQJBAJ01QZm635OGmos41KsKF5bsE8gL
|
||||
SpBBH69Yu/ECqGwie7iU84FUNnO4zIHjwghlPVVlZX3Vz9o4S+fn2N9DC+cCQGyZ
|
||||
QyCxGdC0r5fbwHJQS/ZQn+UGfvlVzqoXDVMVn3t6ZES6YZrT61eHnOM5qGqklIxE
|
||||
Old3vDZXPt/MU8Zvk3kCQBOgUx2VxvTrHN37hk9/QIDiM62+RenBm1M3ah8xTosf
|
||||
1mSeEb6d9Kwb3TgPBmA7YXzJuAQfRIvEPMPxT5SSr6Q=
|
||||
-----END RSA PRIVATE KEY-----
|
||||
28
examples/websocket_compress/websocket_app.ecf
Normal file
28
examples/websocket_compress/websocket_app.ecf
Normal file
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-16-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-16-0 http://www.eiffel.com/developers/xml/configuration-1-16-0.xsd" name="websocket_app" uuid="75D17C20-10A8-4E4C-A059-33D72A2B6AEF">
|
||||
<target name="websocket_app">
|
||||
<root class="APPLICATION" feature="make_and_launch"/>
|
||||
<file_rule>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/CVS$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option concurrency="scoop" root_catcall_detection="none" root_concurrency="scoop" root_void_safety="all" profile="true" debug="true" warning="true" is_attached_by_default="true" void_safety="all" syntax="transitional">
|
||||
<debug name="ws" enabled="true"/>
|
||||
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
|
||||
</option>
|
||||
<setting name="console_application" value="true"/>
|
||||
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
|
||||
<library name="http" location="..\..\library\network\protocol\http\http-safe.ecf"/>
|
||||
<library name="standalone_websocket_connector" location="..\..\library\server\wsf\connector\standalone_websocket-safe.ecf" readonly="false">
|
||||
<option profile="true" debug="true">
|
||||
<debug name="ws" enabled="true"/>
|
||||
</option>
|
||||
</library>
|
||||
<library name="wsf" location="..\..\library\server\wsf\wsf-safe.ecf"/>
|
||||
<cluster name="app" location=".\" recursive="true">
|
||||
<option profile="true">
|
||||
</option>
|
||||
</cluster>
|
||||
</target>
|
||||
</system>
|
||||
6
examples/websocket_compress/websocket_app.rc
Normal file
6
examples/websocket_compress/websocket_app.rc
Normal file
@@ -0,0 +1,6 @@
|
||||
#include <windows.h>
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
1 "This Program was made using EiffelStudio using Visual Studio C++"
|
||||
END
|
||||
15
examples/websocket_compress/ws.ini
Normal file
15
examples/websocket_compress/ws.ini
Normal file
@@ -0,0 +1,15 @@
|
||||
verbose=false
|
||||
verbose_level=INFORMATION
|
||||
port=9090
|
||||
max_concurrent_connections=10
|
||||
keep_alive_timeout=30
|
||||
max_tcp_clients=30
|
||||
socket_timeout=30000
|
||||
max_keep_alive_requests=3000
|
||||
|
||||
### SSL settings
|
||||
# enable SSL, with file certificate.
|
||||
ssl_enabled=false
|
||||
ssl_ca_key=server.key
|
||||
ssl_ca_crt=server.crt
|
||||
|
||||
Reference in New Issue
Block a user