как написать сокет сервер в laravel? - PullRequest
1 голос
/ 29 февраля 2020

я написал код в php, который делает сервер сокетов, и он работал:

<?php

$host = "127.0.0.1";
$port = 25003;
set_time_limit(0);
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
$result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n");
$result = socket_listen($socket, 3) or die("Could not set up socket listener\n");

$spawn = socket_accept($socket) or die("Could not accept incoming connection\n");
$input = socket_read($spawn, 1024) or die("Could not read input\n");
$input = trim($input);
echo "Client Message : ".$input;
$output = strrev($input) . "\n";
socket_write($spawn, $output, strlen ($output)) or die("Could not write output\n");
socket_close($spawn);
socket_close($socket);
?>

затем я переместил этот код в контроллер laravel. как это:

class HomeController extends Controller
{     
    function socket_server()
    {
        // code above
    }
}

но я получаю эту ошибку:

socket_create() has been disabled for security reasons

как я могу написать сервер сокетов в laravel?

Ответы [ 2 ]

0 голосов
/ 01 марта 2020

socket_create() has been disabled for security reasons

Если вы получаете, что невозможно создать такой сервер каким-либо образом с PHP. Обратитесь к поставщику вашего сервера и попросите его включить команду. Если вы работаете локально, убедитесь, что функция не отключена в php .ini


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

Чтобы ответить на ваш вопрос, это зависит от проекта; Вы можете использовать сторонние сервисы, такие как Pusher.com, которые уже поддерживаются Laravel. Если вы не хотите использовать сторонние сервисы и имеете больше свободы, я рекомендую Ratchet для сокет-серверов: http://socketo.me Проект продолжен и прост в использовании / реализации.

0 голосов
/ 29 февраля 2020

Вам не нужно писать сокет-сервер с нуля, поверьте мне, это уже сделано просто отлично. Посмотрите на laravel широковещательные документы , вы можете использовать laravel -websockets или laravel -echo-server для трансляции ваших данных через сокеты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...