Чат для терминального сервера

Общая задача в целом простая: нужно запустить корпоративный чат, но чтобы все пользователи пользовались им в терминальных сессиях. Физически они работают на одном Windows-сервере.

Автору этой статьи довелось повидать много извращений типа запуска Skype в пользовательских сессиях или попытки работать с OpenFire и его жутко прожорливым в плане памяти XMPP клиентом Spark. Либо бессерверные варианты вроде Vypress, которые не могут работать корректно в терминалках в принципе.

Поэтому, обрисуем четыре важных требования, которые предъявляются для чата в терминальной среде:

  1. Лёгкая установка
  2. Минимальный расход оперативной памяти
  3. Клиенты чата не должны мешать друг другу
  4. Простое обновление

В статье будет идти речь о последней версии корпоративного чата MyChat 7.0 от 7 июля 2018 года.


1. Лёгкая установка


Сервер MyChat устанавливается стандартно, без каких-то особых хитростей. Можно запускать его как обычное приложения, либо службой. Можно ставить на терминальный сервер, можно на любой другой компьютер или виртуальную машину не принципиально.

Далее, запускаем на терминальном сервере инсталлятор MyChat Client. На этапе установки, когда тот спросит, в какую папку следует ставить приложение, выберите "Program Files":

Выбор папки для установки MyChat Client

Итак, приложение установлено, теперь надо как-то попроще зарегистрировать пользователей и дать им доступ к серверу чата.

Быстрее всего это сделать, добавив в автозагрузку всем пользователям терминального сервера строку типа:

"C:\Program Files (x86)\MyChat Client\mcclient.exe" /auto -server "192.168.1.50" -randompassword

Описание ключа /auto в справке

Таким образом, мы сразу прописываем всем пользователям адрес сервера и автоматически регистрируем их на MyChat Server-е под именем Windows-пользователя и случайно сгенерированным паролем. Приложение MyChat будет автоматически подключаться к серверу сразу после входа в терминальную сессию, ничего не нужно будет вводить дополнительно.


2. Минимальный расход оперативной памяти


MyChat Client под Windows — это классическое win32 приложение, не требующее .NET, поэтому оно хорошо работает даже на устаревших операционных системах типа Windows XP, коих используется ещё огромное количество по всем городам и весям.

Поскольку количество физической памяти на терминальном сервере ограничено, администратор должен приблизительно знать, какие программы будут работать у пользователей, чтобы рассчитать потребляемую оперативную память на каждого человека.

Корпоративный чат — не самая важная программа, есть ещё 1С, офисные приложения и куча всего дополнительно. Однако чат будет работать всё время, в фоне. Поэтому количество потребляемой им памяти должно быть минимальным.

На скриншоте показана типичная ситуация обычного Windows-пользователя на Windows 8:

Потребление памяти программами Skype, Viber, MyChat в диспетчере задач Windows

58 мегабайт — вполне терпимо, по сравнению со Skype, Viber и похожими на них интернет-мессенджерами. Не забываем, что MyChat — это офисный мессенджер, который может работать даже без Интернета, сугубо в вашей сети.


3. Клиенты чата не должны мешать друг другу


Чтобы пользователи смогли передавать документы внутри среды терминального сервера, нужно настроить систему передачи файлов по умолчанию. Это легко сделать в админке сервера, чтобы не заниматься настройкой индивидуально, для каждого пользователя.

Заходим в админку, раздел "Инструменты", "Шаблоны настроек клиентов", и делаем новый шаблон:

Создание нового шаблона для файлов терминального сервера в админке сервера MyChat

А потом назначаем этот шаблон "terminal-files" той группе прав, куда вы помещаете всех зарегистрированных пользователей. У меня это "Guests":

Назначение группы прав для шаблона файлов терминального сервера в админке MyChat

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


4. Простое обновление


Обновление на новую версию происходит в два этапа: сначала выключаем сервер MyChat, обновляем его поверху, а затем обновляем единственный MyChat Client на сервере, тоже поверху. Вся история и настройки сохраняются. Обновлять можно, пропуская версии, например, с 5.0 сразу на 7.0, минуя все промежуточные версии.

Но есть одна проблема. Как перед обновлением выгрузить все пользовательские копии приложения MyChat Client, если это, например, обеденный перерыв, не завершая их пользовательские сессии в терминале?

Для этого есть красивое решение, специальный скрипт для принудительного отключения и завершения работы всех клиентских приложений. Его следует выполнить перед обновлением сервера MyChat.

Официальная справка по обновлению мессенджера MyChat на терминальном сервере.

Служба поддержки