Вопрос

WebSocket сообщения из клиента

Добрый день.

Может сталкивался кто с таким, что необходимо из под одного пользователя послать socket сообщение другому именно из клиента без использования сервисов или бизнес-процессов?

А то я уткнулся в то что ping-pong могу проверить и всё.

При попытке слать другие сообщения, даже тот пользователь что их шлёт, ответ не получает и ни в один обработчик таких действий точкой останова не удается попасть.

Нравится

6 комментариев

Михаил, 

С механизмом передачи сообщений по WebSocket можно ознакомится тут: https://academy.terrasoft.ru/documents/technic-sdk/7-12/mehanizm-peredachi-soobshcheniy-po-websocket-clientmessagebridge

Сам механизм WebSocket'ов подразумевает наличие клиента и сервера:  https://developer.mozilla.org/ru/docs/WebSockets

У запущенного в IIS приложении однозначно есть сервер. Статья из MDN ровным счётом ничего не объясняет касаемо BPM, попытки принять сообщение на клиенте не увенчались успехом. Сообщение уходило отлично, но в ответ как бы я не пытался сделать обработчик он ни разу не срабатывал. В статье на Академии описан механизм отправки сообщения именно из c#, к сожалению такой подход не устраивает мои интересы. Хотелось бы понять, существует ли возможность отправить и принять сообщение именно средствами js?

Кисловский Михаил Андреевич,

Возможно не совсем правильно поняла изначально Ваш вопрос.

На клиенте сокет можно создать следующим образом: 

var socket = new WebSocket(<"ws://адрес сервера : порт>);

 

Tsopa,

 

Да с этим не было проблем, пытался даже так
var socket = new Terrasoft.WebSocketChannel({serviceUrl:"ws://..."})
undefined
socket.postMessage({Id: Terrasoft.generateGUID(),
    Header: {
        Sender: "CustomSender",
        BodyTypeName: null
    },
    Body: "Hello BPM"
})

Но безуспешно.

лепим объект d и высылаем его Broadcast:

Приходит ответ от сервера, декодится Body, отсылается BroadCast сообщение в конфигурацию.

Ну и я так понимаю можно в любом месте подписаться на сообщение: на нужной странице/сделать модуль, который будет грузиться изначально при заходе пользователя(аналог териковских listener-ов)/втупую подписаться в CTI панели(она всегда грузится + что важно, не скрывается при работе пользователя в системе).
Осталось в body кидать id юзера/контакта и как-то фильтровать.

мммда...

Хм, как то подозрительно. Я broadcast'ом в рамках одной сессии только сообщения получал. Не удалось довести сообщение до пользователя Х, от пользователя У.

Показать все комментарии