Как реализовать серверные сообщения с Websockets в Codeigniter на AWS? - PullRequest
1 голос
/ 29 февраля 2020

Так что я только что получил Websockets, работающий в моем приложении Codeigniter с этой библиотекой. Он отлично работает на локальном хосте, но когда я помещаю sh весь этот код в свой экземпляр AWS, я не могу получить никаких сообщений.

Я уже сделал все шаги в файле readme, чтобы добавить библиотеку на мой сервер, и я даже могу сделать тест с отправкой сообщений между двумя «клиентами». Однако мне нужно отправлять сообщения от моего контроллера, и мне нужно, чтобы они отображались моим представлением.

Мой класс контроллера:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
require('vendor/autoload.php');

use WebSocket\Client;

public function sendMessage() {
    // Create client object
    $this->client = new Client('ws://0.0.0.0:8282');
    //send null message for verification
    $this->client->send(json_encode(array('user_id' => 1, 'message' => null)));
    //send actual message
    $this->client->send(json_encode(array('user_id' => 1, 'message' => 'Super cool message to myself!')));
}

Код сокета в моем представлении:

var conn = new WebSocket('ws://localhost:8282');
var client = {
    user_id: 1,
    recipient_id: null,
    type: 'socket',
    token: null,
    message: null
};

conn.onopen = function (e) {
    conn.send(JSON.stringify(client));
    $('#messages').append('<font color="green">Successfully connected as user ' + client.user_id + '</font><br>');
};

conn.onmessage = function (e) {
    var data = JSON.parse(e.data);
    if (data.message) {
        $('#messages').append(data.user_id + ' : ' + data.message + '<br>');
    }
    if (data.type === 'token') {
        $('#token').html('JWT Token : ' + data.token);
    }
};

Опять же, это работает на локальном хосте, но я никогда не вижу свое "Супер крутое сообщение для себя" в моем AWS. Почему это? Это потому, что я слушаю ws: // localhost: 8282 в своем коде сокета в представлении? Я уже пытался сменить localhost на ip-адрес моего сервера, но мой взгляд никогда не сможет войти в систему как пользователь.

...