Как отправить реальное рычание сообщений с помощью JavaScript? - PullRequest
19 голосов
/ 18 сентября 2009

Можно ли публиковать гроул-уведомления на компьютер пользователя из веб-приложения, используя JavaScript? Это будет только в приложении интрасети, поэтому безопасность не является главной проблемой. Кроме того, он будет ограничен только пользователями Mac с Safari или Firefox.

Спасибо.

Ответы [ 9 ]

7 голосов
/ 18 сентября 2009

Growl имеет сетевой интерфейс , а HTML 5 имеет веб-сокеты , поэтому теоретически это может быть полностью возможно в JavaScript (при реализации веб-сокетов). Более реалистично, если ваш веб-сервер подключен к той же сети, что и ваши клиенты (то есть может видеть и подключаться к их отдельным IP-адресам), вы можете выполнить обратный вызов в стиле AJAX для скрипта на сервере, который будет выполнять сетевой запрос. *

3 голосов
/ 20 апреля 2011

Fluid , генератор браузера для Mac для конкретного сайта, предоставляет API уведомлений Growl JavaScript [ 1 ]:

window.fluid.showGrowlNotification({
    title: "title", 
    description: "description", 
    priority: 1, 
    sticky: false,
    identifier: "foo",
    onclick: callbackFunc,
    icon: imgEl // or URL string
})

Соответствующий источник - на странице Fluid Developer .

Вы можете найти примеры из реальной жизни на userscripts.org .

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

Создание моста, как предполагает Адам, имеет преимущество, требующее минимальных усилий со стороны пользователей.

3 голосов
/ 19 сентября 2009

Google Gears имеет экспериментальную поддержку для уведомлений Growl.

2 голосов
/ 17 ноября 2011

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

Возможные решения исследованы:

  • Flash - из-за того, что flash имеет доступ к обычным соединениям с сокетами, кажется хорошей идеей придумать фрагмент flash, который предоставил бы некоторый API для javascript через ExternalInterface. Flash-объект будет обслуживаться с сервера веб-сайта (удаленное местоположение) и пытаться установить связь с локальным интерфейсом рычания, что приведет к проверке файла междоменной политики. Это включает в себя общение, которое на данный момент не понято (не поддерживается) сервисом Growl, поэтому соединение не будет установлено. В качестве дополнительной информации: рычаг для windows имел поддержку клиентов на базе Flash, но, судя по этому недавнему обсуждению 1011 * в текущей версии не работает).

  • WebSockets - аналогично идее, основанной на флэш-памяти, для веб-сокетов требуется первоначальный обмен парой http-запросов / ответов, прежде чем соединение будет обновлено до обычного двустороннего сокетного соединения. Как и в подходе Flash, это будет работать, но потребуется рычание для поддержки этой первоначальной связи на основе http до подключения к сокету. Growl не поддерживает это сейчас, некоторые говорят, что это может произойти, когда спецификация для Growl будет окончательной.

  • Google Gears - Не проверял его, но Google Gears больше не поддерживается по состоянию на март 2011 года, возможно, возникли проблемы с поддержкой Firefox в версии> = 4.

1 голос
/ 22 декабря 2010

Пост http://ajaxian.com/archives/growls-for-windows-and-a-web-notification-api содержит ссылку на growl.js, который был написан для работы с Growl для Windows. Я не изучил это достаточно, чтобы знать, будет ли подобный подход работать с Growl.

0 голосов
/ 26 августа 2014

Если у ваших пользователей есть flash, вы можете позаимствовать мост javascript-flash-growl из здесь . Вы всегда можете проверить внутреннюю часть скрипта с помощью чего-то вроде JPEXS.

Я лично успешно использовал его и jQuery для настройки некоторых собственных уведомлений для себя , используя mediawiki и используя tampermonkey / greasemonkey. Единственные проблемы возникают, если флэш-память заблокирована / запрещена / не установлена, или когда происходит сбой флэш-памяти.

0 голосов
/ 11 декабря 2012

Другой автор упоминал об этом, но вы определенно можете использовать Javascript (с небольшой помощью Flash, но вам не нужно возиться с этой частью), чтобы отправлять уведомления в Growl, работающий локально. Вот тестовая страница, чтобы попробовать ее, ничего не настраивая: http://www.growlforwindows.com/gfw/examples/js/

Обратите внимание, что в настоящее время это работает только в Windows. Как отмечалось ранее, поддержка версии Flash для Mac-подключений в настоящее время нарушена.

В Windows вы также можете использовать WebSockets, и вот похожая тестовая страница: http://www.growlforwindows.com/gfw/examples/websocket/

Обратите внимание, что в настоящее время это также не реализовано в Growl на Mac, поэтому, если вы ориентируетесь на пользователей Mac (что звучит так, как вы), это, вероятно, не поможет. Хотелось бы отметить, что и Javascript, и WebSockets становятся возможными после того, как поддержка полностью добавлена ​​в клиент OSX.

0 голосов
/ 09 ноября 2012

Вы также можете попробовать Gritter , "похожее на рычание уведомление для jQuery."

0 голосов
/ 28 июня 2012

Для клиентских методов я пробовал следующее:

Если используется Growl для Windows или Growl версии 1.3+, Вы можете использовать двоичный файл Flash, как показано на этой демонстрационной странице

Существует также расширение Chrome, созданное GfW, которое использует двоичный файл в качестве NPAPI. GrowlChrome
Они основаны на протоколе GNTP, который был разработан GfW, и первоначальный проект Growl (для Mac) принял его из версии 1.3

Для версии 1.2.x я нашел другое работающее расширение chrome: Уведомление Twitter и Уведомление Growl для Google Play . Эти расширения основаны на JSGrowl

Ссылки

...