Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Новый топик    Ответить
 WebSocketd + M  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2070
Доброго дня всем .

Недавно на comp.lang.mumps
появилась заметка В. Бантела о работе GT.M + websocketd
По мне, для работы в классическом М-е это очень даже здорово !
Там нечего практически делать - ВСЕ очень просто.

1. Скачать для вашей системы с http://websocketd.com/ бинарный файл,
которому НЕ ТРЕБУЕТСЯ инсталяция.

2. Написать на М самую что не есть простенбкую програмульку (wsoc):
+
wsoc ;;New Routine created and compiled tools "WEB-MEditor for GT.M" 
   ;f  w $h_" - "_$zv,! h 1 
   f i=1:1:10000 d
   . s a(i)="This is test array a 10000 string send to WebSocket in http browser NR. = "_i
   zwr a
   quit

или любую другую на Ваш вкус.

3. Создайте исполнительный bash file (в Каше по моему тоже это можно) zwebsoc.sh
+
#!/bin/bash
cd /usr/gtm63A
gtm_dist="/usr/gtm63A"; export gtm_dist
gtmgbldir="/usr/gtm63A/mumps.gld"; export gtmgbldir
if [ "" = "UTF-8" -o "" = "utf-8" ] ; then
        if [ -e /usr/gtm63A/utf8 ] ; then
                gtm_dist="/usr/gtm63A/utf8"; export gtm_dist
        fi
fi
gtmroutines="/usr/gtm63A"; export gtmroutines
gtm="/usr/gtm63A/mumps -direct"; export gtm
mupip="/usr/gtm63A/mupip"; export mupip
lke="/usr/gtm63A/lke"; export lke
gde="/usr/gtm63A/mumps -r ^GDE"; export gde
dse="/usr/gtm63A/dse"; export dse
PATH=$PATH:$gtm_dist
mumps -run wsoc

и запустите его следующим образом:
+
login as: root
root@192.168.1.111's password:
Last login: Tue Feb 19 20:25:47 2019 from 192.168.1.104
[root@GTM ~]# /usr/gtm63A/websoc/websocketd --port 8090 /usr/gtm63A/zwebsoc.sh
Wed, 20 Feb 2019 08:20:50 +0200 | INFO   | server     |  | Serving using application   : /usr/gtm63A/zwebsoc.sh
Wed, 20 Feb 2019 08:20:50 +0200 | INFO   | server     |  | Starting WebSocket server   : ws://GTM.WEB.server:8090/

4. Создайте html fail (например wsoc.html и поместите его в папку Вашего HTTP сервера) где впишите следующий код :
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns='http://www.w3.org/1999/xhtml' lang='en'>
<meta charset='utf-8'>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="icon" type="image/png" href="/usr/gtm63A/websoc/email.png" />

<title>Home WebSocket</title>
<body id="home_body" >
</head>


<script>
    var ws = new WebSocket('ws://192.168.1.111:8090/');
    ws.onmessage = function(event) {
      console.log('Return MData: ' + event.data); 
    };
  </script>

</html>

   


5. Откройте этот html файл (например для моего Apach) :
http://192.168.1.111:80/websoc.html

Вот и все. Просто.
Модератор: поправил ссылки, чтобы работали правильно
20 фев 19, 09:44    [21815140]     Ответить | Цитировать Сообщить модератору
 Re: WebSocketd + M  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2070
Используя этот метод, на простенькую машину пустил такой тест:
f i=1:1:1000000 s var(i)="Записываем и читаем этот текст командой Xecute nr."_i w var(i)_$c(13,10)

Я получил весь результат на html странице за 15 сек ...
26 фев 19, 12:53    [21819616]     Ответить | Цитировать Сообщить модератору
 Re: WebSocketd + M  [new]
kalin
Member

Откуда:
Сообщений: 313
Valeriu,
Делал еще проще. Cache писало в поток, который ловил php скриптом, а дальше "дело техники".
15 мар 19, 23:15    [21834399]     Ответить | Цитировать Сообщить модератору
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Ответить