gpt4 book ai didi

javascript - Laravel Homestead,Socket.io 连接被拒绝

转载 作者:可可西里 更新时间:2023-10-31 23:03:14 26 4
gpt4 key购买 nike

我正在使用 laravel 事件广播、socket.io、node.js 和 redis 将通知实时传递到客户端。

代码相当简单,当我向服务器上的“/”发出一个获取请求时,一个事件将被触发,一些数据将被广播到所有在 channel 上监听这个事件的浏览器(客户端)(测试- channel )。

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 监听特定 channel 的客户端,我得到了这个奇怪的错误

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 Using Windows 10 and Homestead virtual box.

有什么帮助吗?

最佳答案

我有同样的问题,我解决了它在 VirtualBox 中打开端口 3000。为此,您应该进入 homestead settings inside adn 然后 Network->Port Forwarding 并在两个端口上都设置 3000。

关于javascript - Laravel Homestead,Socket.io 连接被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33385641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com