@alabs

Workerman обрывает соединение и выводит кракозябры. Как решить вопрос?

Добрый день.
Разбираюсь с сокетами на основе библиотеки Workerman
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Workerman Sockets Test</title>
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
</head>
<body>
	<!-- форма для отправки сообщений -->
	<form name="publish">
	  <input type="text" name="message">
	  <input type="submit" value="Отправить">
	</form>

	<!-- здесь будут появляться входящие сообщения -->
	<div id="subscribe"></div>

    <script type="text/javascript">
        
		var socket = new WebSocket("ws://111.111.111.111:8000");
		socket.onopen = function() {
		  console.log("Соединение установлено.");
		};

		socket.onclose = function(event) {
		  if (event.wasClean) {
			console.log('Соединение закрыто чисто');
		  } else {
			console.log('Обрыв соединения'); 
		  }
		  console.log('Код: ' + event.code + ' причина: ' + event.reason);
		};

		socket.onmessage = function(event) {
		  console.log("Получены данные " + event.data);
		  var incomingMessage = event.data;
		  showMessage(incomingMessage);
		};

		socket.onerror = function(error) {
		  console.log("Ошибка " + error.message);
		};
		
		// отправить сообщение из формы publish
		document.forms.publish.onsubmit = function() {
		  var outgoingMessage = this.message.value;

		  socket.send(outgoingMessage);
		  return false;
		};
		// показать сообщение в div#subscribe
		function showMessage(message) {
		  var messageElem = document.createElement('div');
		  messageElem.appendChild(document.createTextNode(message));
		  document.getElementById('subscribe').appendChild(messageElem);
		}
    </script>

</body>
</html>


<?php
require_once '/Workerman/Autoloader.php';
use Workerman\Worker;

// массив для связи соединения пользователя и необходимого нам параметра
$users = [];

// создаём ws-сервер, к которому будут подключаться все наши пользователи
$ws_worker = new Worker("websocket://0.0.0.0:8000");
//$ws_worker->transport = 'ssl';

// 4 processes
$ws_worker->count = 4;

// Emitted when new connection come
$ws_worker->onConnect = function($connection)
{
    echo "New connection\n";
 };

// Emitted when data received
$ws_worker->onMessage = function($connection, $data)
{
	echo $data."\n";
    // Send hello $data
   // $connection->send("hello $data");
};

// Emitted when connection closed
$ws_worker->onClose = function($connection)
{
    echo "Connection closed\n";
};

// Run worker
Worker::runAll();


На выходе получаю успешно установленное соединение, но ответов не получаю.
Библиотека запущена в тестовом режиме. Вот скрины:
5d80a8b78af15847616445.png
  • Вопрос задан
  • 160 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы