Я использую laravel Event broadcasting, socket.io, node.js и redis для передачи уведомлений стороне клиента в режиме реального времени.Laravel Homestead, Socket.io Connection Refused
Код довольно прост, когда я делаю запрос на получение «/» на сервере, событие будет запущено, а некоторые данные будут переданы во все браузеры (на стороне клиента), которые прослушивают это событие на канале (тест-канал).
Содержание routes.php:
Route::get('/', 'uses' => function() {
Event::fire(new App\Events\UserHasRegistered('DummyData'));
return view('test');
}]);
Класс UserHasRegistered Событие:
class UserHasRegistered extends Event implements ShouldBroadcast{
use SerializesModels;
public $name;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct($name){
$this->name = $name;
}
/**
* Get the channels the event should be broadcast on.
*
* @return array
*/
public function broadcastOn(){
return ['test-channel'];
}
}
Содержимое файла узла сервера:
/*General Configurations :
- Setting up the node Server
- Server side Socket.io
- node js Redis Client
- instance of ioredis
*/
var server = require('http').Server();
var io = require('socket.io')(server);
var Redis = require('ioredis');
var redis = new Redis();
/*listen to a channel , and when a Message Arrives we send it to All Listening clients via socket.io*/
redis.subscribe('test-channel');
redis.on('message' , function(channel , message){
message = JSON.parse(message);
// The Client Side Channel naming conversion => channelName:EventPublishedToServer => testChannel:UserHasRegistered
io.emit(channel + ':' + message.event , message.data);
});
/*Booting Up the Server : port 3000 */
server.listen(3000 , function(){
console.log('The Server Is Running');
});
Каждая вещь работает отлично, и данные передается на сервер узла через redis, но на стороне клиента, где я использую socket.io для прослушивания на определенный канал, я получаю эту ошибку странно
GET http://192.168.10.10:3000/socket.io/?EIO=3&transport=polling&t=1446018378941-633 Net :: ERR_CONNECTION_REFUSED
сторона Клиент:
<script type="text/javascript" src="/js/socket.io.js"></script>
<script>
/*Homestead IP Address , Port:3000 Node Server Port*/
var socket = io('http://192.168.10.10:3000');
/*When Data is sent to client side*/
socket.on('test-channel:App\\Events\\UserHasRegistered' , function(data){
console.log(data);
//$('ul').append('<li><h5>'+ data.name +'</h5></li>');
});
</script>
I`m Использование Windows 10 и Homestead виртуальной коробка.
любая помощь?
Привет, проверьте второй ответ, это правильный! Обязательно отметьте это, чтобы вы могли помочь другим, как это помогло мне – Deegriz