Так что я только что получил 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-адрес моего сервера, но мой взгляд никогда не сможет войти в систему как пользователь.