У меня нет соединения Websocket между клиентским скриптом и сервером.
Это работает нормально в моей местной среде.
Также я следую за этим ссылка на сайт.
Вот серверный скрипт, который инициализирует сервер websocket и прослушивает соединение клиента с 8080
порт.
public function run()
{
$loop = Factory::create();
$pusher = new Pusher;
$context = new Context($loop);
$pull = $context->getSocket(ZMQ::SOCKET_PULL);
$pull->bind('tcp://127.0.0.1:5555'); // Binding to 127.0.0.1 means the only client that can connect is itself
$pull->on('message', array($pusher, 'onBlogEntry'));
// Set up our WebSocket server for clients wanting real-time updates
$webSock = new Server('0.0.0.0:8080', $loop); // Binding to 0.0.0.0 means remotes can connect
$webServer = new IoServer(
new HttpServer(
new WsServer(
new WampServer(
$pusher
)
)
),
$webSock
);
$loop->run();
А вот клиентский скрипт:
var conn = new ab.Session('ws://localhost:8080',
function() {
/* subscribe to following topics */
conn.subscribe('new_order', function(topic, data) ..
Опять же, это работает нормально в локальной настройке.
Также следует отметить, что мое приложение размещается с использованием указанного порта из контейнера Docker.
http://192.168.12.52:8094/xyz/new/....
Я также попытался указать IP в клиентском скрипте:
var conn = new ab.Session('ws://192.168.12.52:8080',
function() {
/* subscribe to following topics */
conn.subscribe('new_order', function(topic, data) ...
В этом случае я получаю следующую ошибку:
WebSocket connection to 'ws://192.168.11.32:8080/' failed: Error during WebSocket handshake: Unexpected response code: 403
Чего здесь не хватает?
Вероятно, это проблема с сертификатом ssl. Я думаю, что новые версии браузеров имеют проблемы с веб-сокетами без ssl. у вас может быть самозаверяющий сертификат. пытаться https://192.168.12.52:8080 и если вы увидели ошибку недействительного сертификата (что-то вроде: ваше соединение не защищено или ваше соединение не является частным), нажмите кнопку «Добавить» или добавьте исключение, затем повторите попытку с тем же браузером. также вы можете использовать wss: // вместо ws: //.
Других решений пока нет …