{"id":181113,"date":"2013-05-28T08:48:02","date_gmt":"2013-05-28T04:48:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=181113"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=181113","title":{"rendered":"<span class=\"post_title\">\u041d\u043e\u0432\u043e\u0435 \u0432 \u0421\u0423\u0411\u0414 Cach\u00e9 2013.1: \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 WebSockets<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t\u0412 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 <a href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/144311\/\">\u0441\u0442\u0430\u0442\u0435\u0439<\/a> \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 WebSocket \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u043f\u043e\u0432\u0435\u0440\u0445 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0441\u043e\u043a\u0435\u0442\u043e\u0432.<\/p>\n<p>  \u0412 \u0421\u0423\u0411\u0414 Cach\u00e9 2013.1 CSP-\u0428\u043b\u044e\u0437 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 HTML 5 \u0434\u043b\u044f WebSocket-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0438 HTML 5 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c. \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0434\u043b\u044f Apache 2.2 \u0438 \u0432\u044b\u0448\u0435, \u0438 \u0434\u043b\u044f IIS 8.0, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e Windows Server 2012.<\/p>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 Cach\u00e9 2013.1 \u0443\u0436\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d Apache 2.4, \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0448\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u043d\u0451\u043c.<br \/>  \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a <a href=\"http:\/\/www.intersystems.ru\/cache\/technology\/components\/zen\/index.html\">ZEN<\/a>, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438 \u043d\u0430 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e <a href=\"http:\/\/www.intersystems.ru\/cache\/technology\/components\/csp\/index.html\">CSP<\/a> \u0438\u043b\u0438 \u043b\u044e\u0431\u0443\u044e \u0434\u0440\u0443\u0433\u0443\u044e.<\/p>\n<p>  <a name=\"habracut\"><\/a>\u0418\u0442\u0430\u043a \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c.<\/p>\n<h4>\u0422\u0435\u043e\u0440\u0438\u044f<\/h4>\n<p>  \u041a\u0430\u043a \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432\u044b\u0448\u0435, \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u044e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u043f\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 WebSocket \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0421\u0423\u0411\u0414 Cach\u00e9 \u0431\u0435\u0440\u0451\u0442 \u043d\u0430 \u0441\u0435\u0431\u044f. \u041e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043a\u043b\u0430\u0441\u0441, \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0432 \u0435\u0433\u043e \u043e\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 <b>%CSP.WebSocket<\/b>, \u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0432 \u043d\u0451\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0442\u043e\u0434\u043e\u0432.<br \/>  \u041e\u0431\u044a\u0435\u043a\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 <b>%CSP.WebSocket<\/b> \u0441\u043b\u0443\u0436\u0438\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 WebSocket. \u0412\u0441\u0435 WebSocket-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u044e\u0442\u0441\u044f \u043e\u0442 <b>%CSP.WebSocket<\/b>.<br \/>  \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u043a\u043b\u0430\u0441\u0441\u0430 <a href=\"http:\/\/docs.intersystems.com\/cache20131\/csp\/documatic\/%25CSP.Documatic.cls?PAGE=CLASS&amp;LIBRARY=%25SYS&amp;CLASSNAME=%25CSP.WebSocket\">%CSP.WebSocket<\/a> \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0435 \u043a\u043b\u0430\u0441\u0441\u043e\u0432.<br \/>  \u0417\u0434\u0435\u0441\u044c \u043e\u0442\u043c\u0435\u0447\u0443 \u043a\u0440\u0430\u0442\u043a\u043e \u043b\u0438\u0448\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445:  <\/p>\n<table>\n<tr>\n<th>\u041c\u0435\u0442\u043e\u0434\/\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e<\/th>\n<th>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435<\/th>\n<\/tr>\n<tr>\n<td><i>Read()<\/i><\/td>\n<td>\u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0430<\/td>\n<\/tr>\n<tr>\n<td><i>Write()<\/i><\/td>\n<td>\u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0443<\/td>\n<\/tr>\n<tr>\n<td><i>OnPreServer()<\/i><\/td>\n<td>\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u044f PreServer: \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434 \u0441\u0442\u0430\u0440\u0442\u043e\u043c WebSocket-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 <\/td>\n<\/tr>\n<tr>\n<td><i>OnPostServer()<\/i><\/td>\n<td>\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u044f PostServer: \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430 WebSocket-\u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/td>\n<\/tr>\n<tr>\n<td><i>Server()<\/i><\/td>\n<td>\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0430\u043c WebSocket-\u0441\u0435\u0440\u0432\u0435\u0440<\/td>\n<\/tr>\n<tr>\n<td><i>EndServer()<\/i><\/td>\n<td>\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c WebSocket-\u0441\u0435\u0440\u0432\u0435\u0440<\/td>\n<\/tr>\n<tr>\n<td><i>AtEnd<\/i><\/td>\n<td>\u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true (1), \u043a\u043e\u0433\u0434\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0447\u0442\u0435\u043d\u0438\u044f, WebSocket-\u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442 \u043a\u043e\u043d\u0446\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043a\u0430\u0434\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445<\/td>\n<\/tr>\n<tr>\n<td><i>SharedConnection<\/i><\/td>\n<td>\u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0431\u0443\u0434\u0435\u0442 \u043b\u0438 \u043e\u0431\u043c\u0435\u043d \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c \u0438 WebSocket-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u043f\u043e \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044e CSP-\u0428\u043b\u044e\u0437\u0430 \u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u043f\u0443\u043b \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 (\u043f\u043e\u043a\u0430 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f)<\/td>\n<\/tr>\n<\/table>\n<p>  <\/p>\n<h4>\u041f\u0440\u0430\u043a\u0442\u0438\u043a\u0430<\/h4>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u0432\u0441\u0451 \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435.<br \/>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432 \u0421\u0442\u0443\u0434\u0438\u0438 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 <b><font color=\"green\">USER<\/font><\/b> ZEN-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u2014 \u043a\u043b\u0430\u0441\u0441 <b>demo.WebSocket<\/b> \u2014 \u0438 \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u043c \u0435\u0451 \u043e\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 <b>%CSP.WebSocket<\/b>:<\/p>\n<blockquote><p><font color=\"#000080\">Class&nbsp;demo.WebSocket&nbsp;Extends&nbsp;<\/font><font color=\"#000000\">(<\/font><font color=\"#000080\">%ZEN.Component.page<\/font><font color=\"#000000\">,&nbsp;<\/font><font color=\"#000080\">%CSP.WebSocket<\/font><font color=\"#000000\">)<br \/>  {<\/p>\n<p>  <\/font><font color=\"#000080\">XData&nbsp;<\/font><font color=\"#000000\">Contents&nbsp;[&nbsp;<\/font><font color=\"#000080\">XMLNamespace&nbsp;<\/font><font color=\"#000000\">=&nbsp;<\/font><font color=\"#800080\">&quot;<a href=\"http:\/\/www.intersystems.com\/zen&quot;&nbsp;\">www.intersystems.com\/zen&quot;&nbsp;<\/a><\/font><font color=\"#000000\">]<br \/>  {<br \/>  &lt;<\/font><font color=\"#000080\">page&nbsp;<\/font><font color=\"#800000\">xmlns<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;<a href=\"http:\/\/www.intersystems.com\/zen&quot;&nbsp;\">www.intersystems.com\/zen&quot;&nbsp;<\/a><\/font><font color=\"#800000\">title<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;&quot;<\/font><font color=\"#000000\">&gt;<br \/>  &lt;\/<\/font><font color=\"#000080\">page<\/font><font color=\"#000000\">&gt;<br \/>  }<\/p>\n<p>  }<\/font><\/p><\/blockquote>\n<p>  \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0444\u0430\u0439\u043b <i>zenCSLM.js<\/i> \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 JSON:<\/p>\n<blockquote><p><font color=\"#000080\">Parameter&nbsp;<\/font><font color=\"#000000\">JSINCLUDES&nbsp;=&nbsp;<\/font><font color=\"#800080\">&quot;zenCSLM.js&quot;<\/font><font color=\"#000000\">;<\/font><\/p><\/blockquote>\n<p>  \u0420\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043f\u043e WebSocket \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439:<\/p>\n<blockquote><p><font color=\"#000080\">\/\/\/&nbsp;This&nbsp;client&nbsp;event,&nbsp;if&nbsp;present,&nbsp;is&nbsp;fired&nbsp;when&nbsp;the&nbsp;page&nbsp;is&nbsp;loaded.<br \/>  ClientMethod&nbsp;<\/font><font color=\"#000000\">onloadHandler()&nbsp;[&nbsp;<\/font><font color=\"#000080\">Language&nbsp;<\/font><font color=\"#000000\">=&nbsp;javascript&nbsp;]<br \/>  {<br \/>  &nbsp;&nbsp;ws<\/font><font color=\"#000080\">=<\/font><font color=\"#000000\">null;<\/p>\n<p>  &nbsp;&nbsp;url<\/font><font color=\"#000080\">=<\/font><font color=\"#000000\">((window.location.protocol&nbsp;<\/font><font color=\"#000080\">==&nbsp;<\/font><font color=\"#800000\">&#8216;https:&#8217;<\/font><font color=\"#000000\">)&nbsp;<\/font><font color=\"#000080\">?&nbsp;<\/font><font color=\"#800000\">&#8216;wss:&#8217;&nbsp;<\/font><font color=\"#000080\">:&nbsp;<\/font><font color=\"#800000\">&#8216;ws:&#8217;<\/font><font color=\"#000000\">)&nbsp;<\/font><font color=\"#000080\">+&nbsp;<\/font><font color=\"#800000\">&#8216;\/\/&#8217;&nbsp;<\/font><font color=\"#000080\">+&nbsp;<\/font><font color=\"#000000\">window.location.host&nbsp;<\/font><font color=\"#000080\">+&nbsp;<\/font><font color=\"#000000\">window.location.pathname;<\/p>\n<p>  &nbsp;&nbsp;wsCtor&nbsp;<\/font><font color=\"#000080\">=&nbsp;<\/font><font color=\"#000000\">window[<\/font><font color=\"#800000\">&#8216;MozWebSocket&#8217;<\/font><font color=\"#000000\">]&nbsp;<\/font><font color=\"#000080\">?&nbsp;<\/font><font color=\"#000000\">MozWebSocket&nbsp;<\/font><font color=\"#000080\">:&nbsp;<\/font><font color=\"#000000\">window[<\/font><font color=\"#800000\">&#8216;WebSocket&#8217;<\/font><font color=\"#000000\">]&nbsp;<\/font><font color=\"#000080\">?&nbsp;<\/font><font color=\"#000000\">WebSocket&nbsp;<\/font><font color=\"#000080\">:&nbsp;<\/font><font color=\"#000000\">null;<br \/>  &nbsp;&nbsp;<br \/>  &nbsp;&nbsp;<\/font><font color=\"#008000\">if&nbsp;<\/font><font color=\"#000000\">(zenIsMissing(wsCtor))&nbsp;zenAlert(<\/font><font color=\"#800000\">&#8216;WebSocket&nbsp;\u041d\u0415&nbsp;\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f&nbsp;\u0432\u0430\u0448\u0438\u043c&nbsp;\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c!&#8217;<\/font><font color=\"#000000\">);<br \/>  }<\/font><\/p>\n<p>  <font color=\"#000080\">ClientMethod&nbsp;<\/font><font color=\"#000000\">start()&nbsp;[&nbsp;<\/font><font color=\"#000080\">Language&nbsp;<\/font><font color=\"#000000\">=&nbsp;javascript&nbsp;]<br \/>  {<br \/>  &nbsp;&nbsp;<\/font><font color=\"#008000\">if&nbsp;<\/font><font color=\"#000000\">(<\/font><font color=\"#000080\">!<\/font><font color=\"#000000\">zenIsMissing(wsCtor))&nbsp;{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#008000\">if&nbsp;<\/font><font color=\"#000000\">(zenIsMissing(ws))&nbsp;{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ws&nbsp;<\/font><font color=\"#000080\">=&nbsp;<\/font><font color=\"#800000\">new&nbsp;<\/font><font color=\"#000000\">wsCtor(url);<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ws.onopen&nbsp;<\/font><font color=\"#000080\">=&nbsp;<\/font><font color=\"#008080\">function<\/font><font color=\"#000000\">()&nbsp;{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zenAlert(<\/font><font color=\"#800000\">&#8216;onopen\\n\\nreadyState:&nbsp;&#8216;<\/font><font color=\"#000000\">,ws.readyState,<\/font><font color=\"#800000\">&#8216;\\nbinaryType:&nbsp;&#8216;<\/font><font color=\"#000000\">,ws.binaryType,<\/font><font color=\"#800000\">&#8216;\\nbufferedAmount:&nbsp;&#8216;<\/font><font color=\"#000000\">,ws.bufferedAmount);<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ws.onmessage&nbsp;<\/font><font color=\"#000080\">=&nbsp;<\/font><font color=\"#008080\">function<\/font><font color=\"#000000\">(e)&nbsp;{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zenAlert(e.data);<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ws.onclose&nbsp;<\/font><font color=\"#000080\">=&nbsp;<\/font><font color=\"#008080\">function<\/font><font color=\"#000000\">(e)&nbsp;{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zenAlert(<\/font><font color=\"#800000\">&#8216;onclose\\n\\nwasClean:&nbsp;&#8216;<\/font><font color=\"#000000\">,e.wasClean,<\/font><font color=\"#800000\">&#8216;\\ncode:&nbsp;&#8216;<\/font><font color=\"#000000\">,e.code,<\/font><font color=\"#800000\">&#8216;\\nreason:&nbsp;&#8216;<\/font><font color=\"#000000\">,e.reason);<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ws<\/font><font color=\"#000080\">=<\/font><font color=\"#000000\">null;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ws.onerror&nbsp;<\/font><font color=\"#000080\">=&nbsp;<\/font><font color=\"#008080\">function<\/font><font color=\"#000000\">(e)&nbsp;{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zenAlert(<\/font><font color=\"#800000\">&#8216;onerror&#8217;<\/font><font color=\"#000000\">);<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;}<br \/>  &nbsp;&nbsp;}<br \/>  }<\/font><\/p><\/blockquote>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f WebSocket-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u0439 \u0436\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0441\u0442\u0440\u043e\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0439 \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430. \u0422\u043e \u0435\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 url \u043d\u0430\u0448\u0435\u0439 ZEN-\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0438 \u0438\u043c\u0435\u0435\u0442 \u0432\u0438\u0434<br \/>  <code>http:\/\/localhost:57772\/csp\/user\/demo.WebSocket.cls<\/code><br \/>  , \u0442\u043e \u0434\u043b\u044f WebSocket-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442<br \/>  <code>ws:\/\/localhost:57772\/csp\/user\/demo.WebSocket.cls<\/code><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u0430 \u043d\u0430\u0448\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430: \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043d\u043e\u043f\u043e\u043a \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440:<\/p>\n<blockquote><p><font color=\"#000080\">XData&nbsp;<\/font><font color=\"#000000\">Contents&nbsp;[&nbsp;<\/font><font color=\"#000080\">XMLNamespace&nbsp;<\/font><font color=\"#000000\">=&nbsp;<\/font><font color=\"#800080\">&quot;<a href=\"http:\/\/www.intersystems.com\/zen&quot;&nbsp;\">www.intersystems.com\/zen&quot;&nbsp;<\/a><\/font><font color=\"#000000\">]<br \/>  {<br \/>  &lt;<\/font><font color=\"#000080\">page&nbsp;<\/font><font color=\"#800000\">xmlns<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;<a href=\"http:\/\/www.intersystems.com\/zen&quot;&nbsp;\">www.intersystems.com\/zen&quot;&nbsp;<\/a><\/font><font color=\"#800000\">title<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;&quot;<\/font><font color=\"#000000\">&gt;<br \/>  &lt;<\/font><font color=\"#000080\">text&nbsp;<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;txt&quot;&nbsp;<\/font><font color=\"#800000\">label<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;\u0422\u0435\u043a\u0441\u0442&nbsp;\u0434\u043b\u044f&nbsp;\u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438&quot;&nbsp;<\/font><font color=\"#800000\">value<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;\u041c\u0438\u0440&quot;<\/font><font color=\"#000000\">\/&gt;<br \/>  &lt;<\/font><font color=\"#000080\">button&nbsp;<\/font><font color=\"#800000\">caption<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;1.\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f&quot;&nbsp;<\/font><font color=\"#800000\">onclick<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;zenPage.start();&quot;<\/font><font color=\"#000000\">\/&gt;<br \/>  &lt;<\/font><font color=\"#000080\">button&nbsp;<\/font><font color=\"#800000\">caption<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;2.\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c&nbsp;\u0442\u0435\u043a\u0441\u0442&quot;&nbsp;<\/font><font color=\"#800000\">onclick<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;if&nbsp;(!zenIsMissing(ws))&nbsp;ws.send(zenGetProp(&#8216;txt&#8217;,&#8217;value&#8217;));&quot;<\/font><font color=\"#000000\">\/&gt;<br \/>  &lt;<\/font><font color=\"#000080\">button&nbsp;<\/font><font color=\"#800000\">caption<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;3.\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c&nbsp;\u0434\u043b\u0438\u043d\u043d\u0443\u044e&nbsp;\u0441\u0442\u0440\u043e\u043a\u0443&quot;&nbsp;<\/font><font color=\"#800000\">onclick<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;zenPage.sendLongStr(100000);&quot;<\/font><font color=\"#000000\">\/&gt;<br \/>  &lt;<\/font><font color=\"#000080\">button&nbsp;<\/font><font color=\"#800000\">caption<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;4.\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c&nbsp;JSON&quot;&nbsp;<\/font><font color=\"#800000\">onclick<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;zenPage.sendJSON();&quot;<\/font><font color=\"#000000\">\/&gt;<br \/>  &lt;<\/font><font color=\"#000080\">button&nbsp;<\/font><font color=\"#800000\">caption<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;5.\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f&quot;&nbsp;<\/font><font color=\"#800000\">onclick<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;if&nbsp;(!zenIsMissing(ws))&nbsp;ws.close();&quot;<\/font><font color=\"#000000\">\/&gt;<br \/>  &lt;\/<\/font><font color=\"#000080\">page<\/font><font color=\"#000000\">&gt;<br \/>  }<\/font><\/p><\/blockquote>\n<p>  \u041a\u043e\u0434 \u043c\u0435\u0442\u043e\u0434\u0430 <i>sendLongStr<\/i> \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439:<\/p>\n<blockquote><p><font color=\"#000080\">ClientMethod&nbsp;<\/font><font color=\"#000000\">sendLongStr(<\/font><font color=\"#ff00ff\">N<\/font><font color=\"#000000\">)&nbsp;[&nbsp;<\/font><font color=\"#000080\">Language&nbsp;<\/font><font color=\"#000000\">=&nbsp;javascript&nbsp;]<br \/>  {<br \/>  &nbsp;&nbsp;<\/font><font color=\"#008000\">if&nbsp;<\/font><font color=\"#000000\">(zenIsMissing(ws))&nbsp;<\/font><font color=\"#008000\">return<\/font><font color=\"#000000\">;<br \/>  &nbsp;&nbsp;<br \/>  &nbsp;&nbsp;<\/font><font color=\"#008080\">var&nbsp;<\/font><font color=\"#000000\">s<\/font><font color=\"#000080\">=<\/font><font color=\"#800000\">&#8216;a&#8217;<\/font><font color=\"#000000\">;<br \/>  &nbsp;&nbsp;<\/font><font color=\"#008000\">for<\/font><font color=\"#000000\">(<\/font><font color=\"#008000\">var&nbsp;<\/font><font color=\"#000000\">i<\/font><font color=\"#000080\">=1<\/font><font color=\"#000000\">;i<\/font><font color=\"#000080\">&lt;<\/font><font color=\"#000000\">N;i<\/font><font color=\"#000080\">++<\/font><font color=\"#000000\">)&nbsp;s<\/font><font color=\"#000080\">+=<\/font><font color=\"#800000\">&#8216;a&#8217;<\/font><font color=\"#000000\">;<br \/>  &nbsp;&nbsp;ws.send(s);<br \/>  }<\/font><\/p><\/blockquote>\n<p>  \u041a\u043e\u0434 \u043c\u0435\u0442\u043e\u0434\u0430 <i>sendJSON<\/i>:<\/p>\n<blockquote><p><font color=\"#000080\">ClientMethod&nbsp;<\/font><font color=\"#000000\">sendJSON()&nbsp;[&nbsp;<\/font><font color=\"#000080\">Language&nbsp;<\/font><font color=\"#000000\">=&nbsp;javascript&nbsp;]<br \/>  {<br \/>  &nbsp;&nbsp;<\/font><font color=\"#008000\">if&nbsp;<\/font><font color=\"#000000\">(zenIsMissing(ws))&nbsp;<\/font><font color=\"#008000\">return<\/font><font color=\"#000000\">;<br \/>  &nbsp;&nbsp;<br \/>  &nbsp;&nbsp;<\/font><font color=\"#008080\">var&nbsp;<\/font><font color=\"#000000\">obj<\/font><font color=\"#000080\">=<\/font><font color=\"#000000\">{<br \/>  &nbsp;&nbsp;&nbsp;<\/font><font color=\"#800000\">&quot;firstName&quot;<\/font><font color=\"#000000\">:&nbsp;<\/font><font color=\"#800000\">&quot;\u0418\u0432\u0430\u043d&quot;<\/font><font color=\"#000000\">,<br \/>  &nbsp;&nbsp;&nbsp;<\/font><font color=\"#800000\">&quot;lastName&quot;<\/font><font color=\"#000000\">:&nbsp;<\/font><font color=\"#800000\">&quot;\u0418\u0432\u0430\u043d\u043e\u0432&quot;<\/font><font color=\"#000000\">,<br \/>  &nbsp;&nbsp;&nbsp;<\/font><font color=\"#800000\">&quot;address&quot;<\/font><font color=\"#000000\">:&nbsp;{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#800000\">&quot;streetAddress&quot;<\/font><font color=\"#000000\">:&nbsp;<\/font><font color=\"#800000\">&quot;\u041c\u043e\u0441\u043a\u043e\u0432\u0441\u043a\u043e\u0435&nbsp;\u0448.,&nbsp;101,&nbsp;\u043a\u0432.101&quot;<\/font><font color=\"#000000\">,<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#800000\">&quot;city&quot;<\/font><font color=\"#000000\">:&nbsp;<\/font><font color=\"#800000\">&quot;\u041b\u0435\u043d\u0438\u043d\u0433\u0440\u0430\u0434&quot;<\/font><font color=\"#000000\">,<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#800000\">&quot;postalCode&quot;<\/font><font color=\"#000000\">:&nbsp;<\/font><font color=\"#000080\">101101<br \/>  &nbsp;&nbsp;&nbsp;<\/font><font color=\"#000000\">},<br \/>  &nbsp;&nbsp;&nbsp;<\/font><font color=\"#800000\">&quot;phoneNumbers&quot;<\/font><font color=\"#000000\">:&nbsp;[<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#800000\">&quot;812&nbsp;123-1234&quot;<\/font><font color=\"#000000\">,<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#800000\">&quot;916&nbsp;123-4567&quot;<br \/>  &nbsp;&nbsp;&nbsp;<\/font><font color=\"#000000\">]<br \/>  &nbsp;&nbsp;};<br \/>  &nbsp;&nbsp;<br \/>  &nbsp;&nbsp;ws.send(ZLM.jsonStringify(obj));<br \/>  }<\/font><\/p><\/blockquote>\n<p>  \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430\u0448\u0435\u0433\u043e WebSocket-\u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u043c\u0435\u0442\u043e\u0434\u044b <i>OnPreServer<\/i>, <i>OnPostServer<\/i> \u0438 <i>Server<\/i>, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0438\u0436\u0435:<\/p>\n<blockquote><p><font color=\"#000080\">Method&nbsp;<\/font><font color=\"#000000\">OnPreServer()&nbsp;<\/font><font color=\"#000080\">As&nbsp;%Status<br \/>  <\/font><font color=\"#000000\">{<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">Do&nbsp;$system<\/font><font color=\"#008080\">.Process<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">Undefined<\/font><font color=\"#000000\">(2)<\/p>\n<p>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">Set&nbsp;<\/font><font color=\"#000000\">^tmp(<\/font><font color=\"#0000ff\">$Increment<\/font><font color=\"#000000\">(^tmp),<\/font><font color=\"#008000\">&quot;OnPreServer&quot;<\/font><font color=\"#000000\">)=<\/font><font color=\"#008000\">&quot;&quot;<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">Quit&nbsp;$$$OK<br \/>  <\/font><font color=\"#000000\">}<\/font><\/p><\/blockquote>\n<p>  <\/p>\n<blockquote><p><font color=\"#000080\">Method&nbsp;<\/font><font color=\"#000000\">OnPostServer()&nbsp;<\/font><font color=\"#000080\">As&nbsp;%Status<br \/>  <\/font><font color=\"#000000\">{<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">Set&nbsp;<\/font><font color=\"#000000\">^tmp(<\/font><font color=\"#0000ff\">$Increment<\/font><font color=\"#000000\">(^tmp),<\/font><font color=\"#008000\">&quot;OnPostServer&quot;<\/font><font color=\"#000000\">)=<\/font><font color=\"#008000\">&quot;&quot;<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">Quit&nbsp;$$$OK<br \/>  <\/font><font color=\"#000000\">}<\/font><\/p><\/blockquote>\n<p>  <\/p>\n<blockquote><p><font color=\"#000080\">Method&nbsp;<\/font><font color=\"#000000\">Server()&nbsp;<\/font><font color=\"#000080\">As&nbsp;%Status<br \/>  <\/font><font color=\"#000000\">{<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">For&nbsp;&nbsp;<\/font><font color=\"#800080\">{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">Set&nbsp;<\/font><font color=\"#800000\">len<\/font><font color=\"#000000\">=32656<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">Set&nbsp;<\/font><font color=\"#800000\">data<\/font><font color=\"#000000\">=<\/font><font color=\"#0000ff\">$ZConvert<\/font><font color=\"#000000\">(..<\/font><font color=\"#0000ff\">Read<\/font><font color=\"#000000\">(.<\/font><font color=\"#800000\">len<\/font><font color=\"#000000\">,.<\/font><font color=\"#800000\">status<\/font><font color=\"#000000\">),<\/font><font color=\"#008000\">&quot;I&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;UTF8&quot;<\/font><font color=\"#000000\">)<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">If&nbsp;$$$ISOK<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">status<\/font><font color=\"#000000\">)&nbsp;<\/font><font color=\"#800080\">{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">If&nbsp;<\/font><font color=\"#800000\">data<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;\u041c\u0438\u0440&quot;&nbsp;<\/font><font color=\"#800080\">{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">Do&nbsp;<\/font><font color=\"#000000\">..<\/font><font color=\"#0000ff\">Write<\/font><font color=\"#000000\">(<\/font><font color=\"#0000ff\">$ZConvert<\/font><font color=\"#000000\">(<\/font><font color=\"#008000\">&quot;\u041f\u0440\u0438\u0432\u0435\u0442,&nbsp;&quot;<\/font><font color=\"#000000\">_<\/font><font color=\"#800000\">data<\/font><font color=\"#000000\">_<\/font><font color=\"#008000\">&quot;!&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;O&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;UTF8&quot;<\/font><font color=\"#000000\">))<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#800080\">}<\/font><font color=\"#0000ff\">ElseIf&nbsp;<\/font><font color=\"#800000\">data<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;bye&quot;&nbsp;<\/font><font color=\"#800080\">{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#008000\">;&nbsp;\u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e&nbsp;\u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u043c&nbsp;\u0440\u0430\u0431\u043e\u0442\u0443&nbsp;WebSocket-\u0441\u0435\u0440\u0432\u0435\u0440\u0430&nbsp;\u0438&nbsp;\u0432\u044b\u0445\u043e\u0434\u0438\u043c&nbsp;\u0438\u0437&nbsp;\u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e&nbsp;\u0446\u0438\u043a\u043b\u0430<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;\u043d\u0430&nbsp;\u043a\u043b\u0438\u0435\u043d\u0442\u0435&nbsp;\u043f\u0440\u0438&nbsp;\u044d\u0442\u043e\u043c&nbsp;\u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442&nbsp;onclose<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">Do&nbsp;<\/font><font color=\"#000000\">..<\/font><font color=\"#0000ff\">EndServer<\/font><font color=\"#000000\">()<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">Quit<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#800080\">}<\/font><font color=\"#0000ff\">Else<\/font><font color=\"#800080\">{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">#Dim&nbsp;<\/font><font color=\"#800000\">obj&nbsp;<\/font><font color=\"#0000ff\">As&nbsp;<\/font><font color=\"#008080\">%RegisteredObject<\/font><font color=\"#000000\">=<\/font><font color=\"#0000ff\">$$$NULLOREF<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;<\/font><font color=\"#000000\">^tmp=<\/font><font color=\"#0000ff\">$Increment<\/font><font color=\"#000000\">(^tmp)<\/p>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#008000\">;&nbsp;\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0435\u043c&nbsp;\u0441\u0442\u0440\u043e\u043a\u0443&nbsp;\u0432&nbsp;\u043e\u0431\u044a\u0435\u043a\u0442<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">If&nbsp;$$$ISOK<\/font><font color=\"#000000\">(<\/font><font color=\"#000080\">##class<\/font><font color=\"#000000\">(<\/font><font color=\"#008080\">%ZEN.Auxiliary.jsonProvider<\/font><font color=\"#000000\">).<\/font><font color=\"#0000ff\">%ConvertJSONToObject<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">data<\/font><font color=\"#000000\">,,.<\/font><font color=\"#800000\">obj<\/font><font color=\"#000000\">))&nbsp;<\/font><font color=\"#800080\">{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#008000\">;&nbsp;\u0435\u0441\u043b\u0438&nbsp;\u043d\u0435\u0442&nbsp;\u043e\u0448\u0438\u0431\u043a\u0438,&nbsp;\u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c&nbsp;\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f&nbsp;\u0441\u0432\u043e\u0439\u0441\u0442\u0432<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">Set&nbsp;<\/font><font color=\"#000000\">^tmp(^tmp,<\/font><font color=\"#008000\">&quot;Server&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;firstName&quot;<\/font><font color=\"#000000\">)=<\/font><font color=\"#800000\">obj<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">firstName<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;<\/font><font color=\"#000000\">^tmp(^tmp,<\/font><font color=\"#008000\">&quot;Server&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;lastName&quot;<\/font><font color=\"#000000\">)=<\/font><font color=\"#800000\">obj<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">lastName<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;<\/font><font color=\"#000000\">^tmp(^tmp,<\/font><font color=\"#008000\">&quot;Server&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;address.streetAddress&quot;<\/font><font color=\"#000000\">)=<\/font><font color=\"#800000\">obj<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">address<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">streetAddress<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;<\/font><font color=\"#000000\">^tmp(^tmp,<\/font><font color=\"#008000\">&quot;Server&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;address.city&quot;<\/font><font color=\"#000000\">)=<\/font><font color=\"#800000\">obj<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">address<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">city<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;<\/font><font color=\"#000000\">^tmp(^tmp,<\/font><font color=\"#008000\">&quot;Server&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;address.postalCode&quot;<\/font><font color=\"#000000\">)=<\/font><font color=\"#800000\">obj<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">address<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">postalCode<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;<\/font><font color=\"#000000\">^tmp(^tmp,<\/font><font color=\"#008000\">&quot;Server&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;phoneNumbers.1&quot;<\/font><font color=\"#000000\">)=<\/font><font color=\"#800000\">obj<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">phoneNumbers<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">GetAt<\/font><font color=\"#000000\">(1)<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">Set&nbsp;<\/font><font color=\"#000000\">^tmp(^tmp,<\/font><font color=\"#008000\">&quot;Server&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;phoneNumbers.2&quot;<\/font><font color=\"#000000\">)=<\/font><font color=\"#800000\">obj<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">phoneNumbers<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">GetAt<\/font><font color=\"#000000\">(2)<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#008000\">;&nbsp;\u041c\u0435\u043d\u044f\u0435\u043c&nbsp;\u0444\u0430\u043c\u0438\u043b\u0438\u044e<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">Set&nbsp;<\/font><font color=\"#800000\">obj<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">lastName<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;\u0421\u0438\u0434\u043e\u0440\u043e\u0432&quot;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c&nbsp;\u0435\u0449\u0451&nbsp;\u043e\u0434\u0438\u043d&nbsp;\u0442\u0435\u043b\u0435\u0444\u043e\u043d<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">Do&nbsp;<\/font><font color=\"#800000\">obj<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">phoneNumbers<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">Insert<\/font><font color=\"#000000\">(<\/font><font color=\"#008000\">&quot;111&nbsp;111-1111&quot;<\/font><font color=\"#000000\">)<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#008000\">;&nbsp;\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c&nbsp;\u043a&nbsp;\u043e\u0431\u044a\u0435\u043a\u0442\u0443&nbsp;\u0435\u0449\u0451&nbsp;\u0434\u0432\u0430&nbsp;\u043d\u043e\u0432\u044b\u0445&nbsp;\u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">Set&nbsp;<\/font><font color=\"#800000\">obj<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">name<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;\u0412\u0430\u0441\u044f&quot;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">Set&nbsp;<\/font><font color=\"#800000\">obj<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">street<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;\u0443\u043b.&nbsp;\u041c\u0438\u0440\u0430&nbsp;17&quot;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;\u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u043c&nbsp;\u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0439&nbsp;\u043e\u0431\u044a\u0435\u043a\u0442&nbsp;\u0432&nbsp;\u0441\u0442\u0440\u043e\u043a\u0443&nbsp;\u0438&nbsp;\u043e\u0442\u0441\u044b\u043b\u0430\u0435\u043c&nbsp;\u043a\u043b\u0438\u0435\u043d\u0442\u0443&nbsp;\u043e\u0431\u0440\u0430\u0442\u043d\u043e<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">Do&nbsp;<\/font><font color=\"#000000\">..<\/font><font color=\"#0000ff\">Write<\/font><font color=\"#000000\">(..<\/font><font color=\"#0000ff\">Write2Str<\/font><font color=\"#000000\">(.<\/font><font color=\"#800000\">obj<\/font><font color=\"#000000\">))<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#800080\">}<\/font><font color=\"#0000ff\">Else<\/font><font color=\"#800080\">{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#008000\">;&nbsp;\u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c&nbsp;\u0434\u0430\u043d\u043d\u044b\u0435&nbsp;\u043f\u0440\u0438&nbsp;\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438&nbsp;\u0434\u043b\u0438\u043d\u043d\u043e\u0439&nbsp;\u0441\u0442\u0440\u043e\u043a\u0438<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">Set&nbsp;<\/font><font color=\"#000000\">^tmp(^tmp,<\/font><font color=\"#008000\">&quot;Server&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;longStr&quot;<\/font><font color=\"#000000\">)=..<\/font><font color=\"#0000ff\">AtEnd<\/font><font color=\"#000000\">_<\/font><font color=\"#008000\">&quot;:&quot;<\/font><font color=\"#000000\">_<\/font><font color=\"#0000ff\">$Length<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">data<\/font><font color=\"#000000\">)_<\/font><font color=\"#008000\">&quot;:&quot;<\/font><font color=\"#000000\">_<\/font><font color=\"#800000\">len<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#800080\">}<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;}<\/font><font color=\"#0000ff\">Else<\/font><font color=\"#800080\">{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">Quit<\/font><font color=\"#000000\">\ud83d\ude41<\/font><font color=\"#0000ff\">$$$GETERRORCODE<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">status<\/font><font color=\"#000000\">)=<\/font><font color=\"#0000ff\">$$$CSPWebSocketClosed<\/font><font color=\"#000000\">)<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#800080\">}<br \/>  &nbsp;&nbsp;}<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">Quit&nbsp;$$$OK<br \/>  <\/font><font color=\"#000000\">}<\/font><\/p><\/blockquote>\n<p>  \u0421\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 <i>Write2Str<\/i> \u0441\u043b\u0443\u0436\u0438\u0442 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0432 \u0441\u0442\u0440\u043e\u043a\u0443, \u0432\u044b\u0432\u043e\u0434\u0438\u043c\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 Write, \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<blockquote><p><font color=\"#000080\">ClassMethod&nbsp;<\/font><font color=\"#000000\">Write2Str(<\/font><font color=\"#000080\">ByRef&nbsp;<\/font><font color=\"#ff00ff\">obj<\/font><font color=\"#000000\">)&nbsp;<\/font><font color=\"#000080\">As&nbsp;%String&nbsp;<\/font><font color=\"#000000\">[&nbsp;<\/font><font color=\"#000080\">Private&nbsp;<\/font><font color=\"#000000\">]<br \/>  {<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">Try<\/font><font color=\"#800080\">{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">Set&nbsp;<\/font><font color=\"#800000\">tIO<\/font><font color=\"#000000\">=<\/font><font color=\"#0000ff\">$IO<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">tXDEV<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;|XDEV|&quot;<\/font><font color=\"#000000\">_+<\/font><font color=\"#0000ff\">$Job<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;Do&nbsp;<\/font><font color=\"#800080\">{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#008000\">\/\/&nbsp;For&nbsp;$$$IsUnicode&nbsp;use&nbsp;UTF-8<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">Open&nbsp;<\/font><font color=\"#800000\">tXDEV<\/font><font color=\"#000000\">\ud83d\ude41<\/font><font color=\"#0000ff\">$ZF<\/font><font color=\"#000000\">(-6,<\/font><font color=\"#0000ff\">$$$XSLTLibrary<\/font><font color=\"#000000\">,12):<\/font><font color=\"#008000\">&quot;&quot;<\/font><font color=\"#000000\">:<\/font><font color=\"#008000\">&quot;S&quot;<\/font><font color=\"#000000\">:\/HOSTNAME=<\/font><font color=\"#008000\">&quot;XSLT&quot;<\/font><font color=\"#000000\">:\/IOT=<\/font><font color=\"#0000ff\">$Select<\/font><font color=\"#000000\">(<\/font><font color=\"#0000ff\">$$$IsUnicode<\/font><font color=\"#000000\">:<\/font><font color=\"#008000\">&quot;UTF8&quot;<\/font><font color=\"#000000\">,1:<\/font><font color=\"#008000\">&quot;RAW&quot;<\/font><font color=\"#000000\">):\/IBU=16384:\/OBU=16384)<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">Use&nbsp;<\/font><font color=\"#800000\">tXDEV<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">Quit<\/font><font color=\"#000000\">:<\/font><font color=\"#0000ff\">$$$ISERR<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">obj<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">%ToJSON<\/font><font color=\"#000000\">(,<\/font><font color=\"#008000\">&quot;aeloiwu&quot;<\/font><font color=\"#000000\">))<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#008000\">\/\/&nbsp;Flush&nbsp;any&nbsp;remaining&nbsp;output<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">Write&nbsp;<\/font><font color=\"#000000\">*-3<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#008000\">\/\/&nbsp;Now&nbsp;read&nbsp;back&nbsp;a&nbsp;string&nbsp;(up&nbsp;to&nbsp;the&nbsp;maximum&nbsp;possible&nbsp;length,&nbsp;32k&nbsp;or&nbsp;~4MB&nbsp;for&nbsp;long&nbsp;strings)<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">Set&nbsp;<\/font><font color=\"#800000\">s&nbsp;<\/font><font color=\"#000000\">=&nbsp;<\/font><font color=\"#008000\">&quot;&quot;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">While&nbsp;<\/font><font color=\"#000000\">(1)&nbsp;<\/font><font color=\"#800080\">{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">#Dim&nbsp;<\/font><font color=\"#800000\">tChunk&nbsp;<\/font><font color=\"#0000ff\">As&nbsp;<\/font><font color=\"#008080\">%String<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">Read&nbsp;<\/font><font color=\"#800000\">tChunk<\/font><font color=\"#000000\">:0<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">Quit<\/font><font color=\"#000000\">:&#8217;<\/font><font color=\"#0000ff\">$Length<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">tChunk<\/font><font color=\"#000000\">)<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">Set&nbsp;<\/font><font color=\"#800000\">s&nbsp;<\/font><font color=\"#000000\">=&nbsp;<\/font><font color=\"#800000\">s&nbsp;<\/font><font color=\"#000000\">_&nbsp;<\/font><font color=\"#800000\">tChunk<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#800080\">}<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<\/font><font color=\"#0000ff\">While&nbsp;<\/font><font color=\"#000000\">(0)<br \/>  &nbsp;&nbsp;<\/font><font color=\"#800080\">}<\/font><font color=\"#0000ff\">Catch<\/font><font color=\"#800080\">{}<\/p>\n<p>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">Close&nbsp;<\/font><font color=\"#800000\">tXDEV<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">Use&nbsp;<\/font><font color=\"#800000\">tIO<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">Quit&nbsp;<\/font><font color=\"#800000\">s<br \/>  <\/font><font color=\"#000000\">}<\/font><\/p><\/blockquote>\n<p>  \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448 \u043a\u043b\u0430\u0441\u0441 (Ctrl+F7) \u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0435\u0433\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 (F5).<br \/>  \u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u0430 ^tmp \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c:<\/p>\n<p>  <code>^tmp=7<\/code><br \/>  <code>^tmp(1,&quot;OnPreServer&quot;)=&quot;&quot;<\/code><br \/>  <code>^tmp(2,&quot;Server&quot;,&quot;longStr&quot;)=&quot;0:32656:32656&quot;<\/code><br \/>  <code>^tmp(3,&quot;Server&quot;,&quot;longStr&quot;)=&quot;0:32656:32656&quot;<\/code><br \/>  <code>^tmp(4,&quot;Server&quot;,&quot;longStr&quot;)=&quot;0:32656:32656&quot;<\/code><br \/>  <code>^tmp(5,&quot;Server&quot;,&quot;longStr&quot;)=&quot;1:2032:2032&quot;<\/code><br \/>  <code>^tmp(6,&quot;Server&quot;,&quot;address.city&quot;)=&quot;\u041b\u0435\u043d\u0438\u043d\u0433\u0440\u0430\u0434&quot;<\/code><br \/>  <code>^tmp(6,&quot;Server&quot;,&quot;address.postalCode&quot;)=101101<\/code><br \/>  <code>^tmp(6,&quot;Server&quot;,&quot;address.streetAddress&quot;)=&quot;\u041c\u043e\u0441\u043a\u043e\u0432\u0441\u043a\u043e\u0435 \u0448., 101, \u043a\u0432.101&quot;<\/code><br \/>  <code>^tmp(6,&quot;Server&quot;,&quot;firstName&quot;)=&quot;\u0418\u0432\u0430\u043d&quot;<\/code><br \/>  <code>^tmp(6,&quot;Server&quot;,&quot;lastName&quot;)=&quot;\u0418\u0432\u0430\u043d\u043e\u0432&quot;<\/code><br \/>  <code>^tmp(6,&quot;Server&quot;,&quot;phoneNumbers.1&quot;)=&quot;812 123-1234&quot;<\/code><br \/>  <code>^tmp(6,&quot;Server&quot;,&quot;phoneNumbers.2&quot;)=&quot;916 123-4567&quot;<\/code><br \/>  <code>^tmp(7,&quot;OnPostServer&quot;)=&quot;&quot;<\/code><\/p>\n<p>  \u0421\u043a\u0430\u0447\u0430\u0442\u044c <a href=\"http:\/\/db.tt\/XvYtcXue\">\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a<\/a> \u043a\u043b\u0430\u0441\u0441\u0430 <b>demo.WebSocket<\/b>.    \t \t\t   \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/181113\/\"> http:\/\/habrahabr.ru\/company\/intersystems\/blog\/181113\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t\u0412 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 <a href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/144311\/\">\u0441\u0442\u0430\u0442\u0435\u0439<\/a> \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 WebSocket \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u043f\u043e\u0432\u0435\u0440\u0445 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0441\u043e\u043a\u0435\u0442\u043e\u0432.<\/p>\n<p>  \u0412 \u0421\u0423\u0411\u0414 Cach\u00e9 2013.1 CSP-\u0428\u043b\u044e\u0437 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 HTML 5 \u0434\u043b\u044f WebSocket-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0438 HTML 5 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c. \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0434\u043b\u044f Apache 2.2 \u0438 \u0432\u044b\u0448\u0435, \u0438 \u0434\u043b\u044f IIS 8.0, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e Windows Server 2012.<\/p>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 Cach\u00e9 2013.1 \u0443\u0436\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d Apache 2.4, \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0448\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u043d\u0451\u043c.<br \/>  \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a <a href=\"http:\/\/www.intersystems.ru\/cache\/technology\/components\/zen\/index.html\">ZEN<\/a>, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438 \u043d\u0430 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e <a href=\"http:\/\/www.intersystems.ru\/cache\/technology\/components\/csp\/index.html\">CSP<\/a> \u0438\u043b\u0438 \u043b\u044e\u0431\u0443\u044e \u0434\u0440\u0443\u0433\u0443\u044e.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-181113","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/181113","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=181113"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/181113\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=181113"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=181113"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=181113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}