В настоящее время я работаю над проектом, который должен использовать WebSockets как способ передачи данных моему клиенту. Инфраструктура выглядит так.
Клиент -> Веб-сервер -> База данных Microsoft SQL
Я думаю, что наиболее идеальная ситуация была бы такой: Клиент открывает сокет для Сервера. Сервер открывает сокет для базы данных Microsoft SQL. Всякий раз, когда база данных обновляется (некоторые данные были вставлены), БД записывает данные в сокет. Сервер записывает данные обратно клиенту.Это может быть немного утомительно, может быть, я смогу каким-то образом открыть сокет для БД напрямую от клиента?
Я хочу знать, есть ли способ автоматически уведомлять сокет веб-серверу об обновлении базы данных MSSQL, чтобы он мог обрабатывать эту информацию.
Главный вопрос действительно; как я заставлю это работать? Я изучил некоторые проекты, которые работают с WebSockets, такие как Node.JS и Socket.IO, а также Tornado. Хотя я не нашел подсказок, где искать эту особенность. Я нашел несколько довольно нестабильных драйверов для баз данных MSSQL для NodeJS, но не понимаю, есть ли способ создать сокет для БД и мгновенно отправлять данные через сокет, когда они закачиваются в базу данных.
Я также понимаю, что создание сокета между клиентом и базой данных было бы неразумным, мягко говоря, с точки зрения безопасности, поскольку на данный момент это не проблема, и что SQL не подходит для приложений реального времени, но я привязан к нему на данный момент :)
Edit 1:
Благодаря @tomfanning я теперь знаю решение этой проблемы, но серьезно сомневаюсь в улучшении производительности. Позвольте мне представить вам ситуацию. В случае, если бы я использовал триггер в базе данных MSSQL, я предполагаю, что это произойдет.
Ситуация 1
А теперь представьте тот же сценарий, но с AJAX
Ситуация 2:
В ситуации 1 вам нужен и запрос, и прием / отправка сокета, а в ситуации 2 вам понадобится только один запрос. Если бы я установил тайм-аут AJAX-запроса на 10MS, он бы показался пользователю, как если бы это было приложение реального времени, такое как веб-сокет? Или ситуация 1 все еще была бы более эффективной, и я просто преувеличиваю?
Заранее спасибо!