2015-08-09 3 views
0

Хорошо, поэтому у меня был сервер socket.io, прослушивающий другой порт, но чтобы заставить его работать с https, мне нужно было его слушать без передача в порт (по умолчанию). (Он отлично работает на другом порту, загруженном с http, но мне нужно, чтобы он работал на https)socket.io.js 404 (с использованием apache на сайт хоста)

Мой проект работал нормально, клиент мог подключать и отправлять данные в порядке. Однако я переместил сайт в свой основной домен, у которого есть сертификат SSL. Сайт загружает все через https, поэтому он не смог загрузить http-версию socket.io.js

Однако теперь, когда я переключил его только на var client = require("socket.io").listen().sockets; вместо того, чтобы слушать другой порт, он все еще не работает. Вместо того, чтобы давать мне ошибку подключения, он не включает файл вообще.

Я боюсь, что мне придется переделать весь сайт, чтобы разместить мои файлы через node.js, и я бы предпочел не делать этого.

Я не использую какой-либо другой модуль, кроме mysql-node и socket.io, и я предпочел бы сохранить его таким образом, если это возможно. Я новичок в node.js, поэтому я сожалею, если есть очевидный ответ, о котором я не знаю.

Я, однако, оглянулся и не мог найти ответ нигде. Или, по крайней мере, ясный ответ.

Могу ли я использовать websockets вместо socket.io? Если да, то как мне это сделать? Честно говоря, я был бы более готов переделать приложение-узел вместо того, чтобы переделывать мой сайт.

Я включая socket.io.js файл в стороне клиента, так как:

<script src="https://mysite/socket-io/socket.io.js"></script> 

, но, конечно, 404, так как это не сам файл, который находится на моем сервере апача. Там нет папки/каталога с именем socket-io в моем каталоге public_html, так что это имеет смысл для меня.

Но как я могу заставить это работать? Нужно ли мне размещать файлы через node.js, или мне лучше использовать веб-узлы HTML5? Достаточно большая демография пользователей моего сайта использует мобильные устройства, поэтому я должен быть уверен, что он работает и на мобильных устройствах.

+0

Почему вы используете два отдельных веб-сервера (Apache и node.js), чтобы создать свой сайт? Как у вас это установлено в архитектуре? Вы пытаетесь обслуживать файл socket.io.js с сервера Apache или с сервером node.js? – jfriend00

ответ

1

Если вы собираетесь использовать apache для размещения файла socket.io.js, вам необходимо поместить этот файл на ваш сервер Apache по пути, из которого Apache может обслуживаться, как и любая другая сеть файл, который должен обслуживать сервер Apache. Или же вы можете просто использовать socket.io.js из общедоступного CDN и использовать общедоступный URL CDN. Это просто файл JS. Вы можете поместить его в любом месте или использовать любой URL-адрес, который достигнет места, где будет обслуживаться файл. Есть некоторые преимущества, позволяющие node.js и socket.io обслуживать его для вас, потому что он гарантирует, что версии для клиента и сервера socket.io всегда синхронизированы, но вам не нужно это делать.

Если вы используете node.js (что похоже на то, что вы хотя бы в некоторой степени), то socket.io, встроенный в node.js, будет автоматически обслуживать файл, если вы используете node.js для обслуживания своих и вы настроили socket.io для прослушивания на том же порту, что и ваш веб-сервер node.js. В этом случае ваша веб-страница и socket.io будут использовать один и тот же порт, и оба будут выполняться через сервер node.js.

Вы не объяснили, почему вы используете как node.js, так и Apache, как работает эта архитектура и почему вы обслуживаете часть своего сайта с помощью Apache, а не просто используете node.js для всего сайта, как это, безусловно, более чистый вариант с socket.io.

Вы можете использовать простые веб-сокеты, если хотите, а не socket.io, но тогда вам, скорее всего, придется создать некоторые из функций socket.io поверх web-сокетов (автоподключение, передача сообщений и т. Д.).) и использование простых web-сокетов не упростит любой из ваших вопросов Apache/node.js. Тривиально обслуживать файл socket.io.js клиенту, используя Apache или node.js, и как только у клиента есть файл, на самом деле больше работать с обычными веб-сокетами, чем с использованием socket.io из-за дополнительных возможностей что socket.io уже построен.

+0

Я использую apache для размещения моих файлов просто потому, что это то, что я использовал с самого начала. Вероятно, я должен был объяснить более ясно; Я использую node.js/socket.io для работы с файлом socket.io.js, но я использую apache для обслуживания сайта (и субдоменов) в целом. Я решил, что смогу добавить проект socket.io на сайт и включить файл js (который работает для http, но не для https). Я не уверен, как мне пойти на хостинг самого сайта с node.js, и будет ли https работать с этим? Будет ли работать PHP/MySQL? Является ли узел достаточно стабильным, чтобы поддерживать сайт на 24/7? Спасибо btw :) – Axiom

+1

@Axiom. Если вы уже используете PHP с Apache, почему бы просто не реализовать реализацию socket.io, которая работает с Apache/PHP, а не вводить в ваш стек всю дополнительную технологию веб-сервера только для web-сокетов? – jfriend00

+0

О! Я не знал, что у PHP есть такая возможность. Спасибо. Я посмотрю на него – Axiom

Смежные вопросы