Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Laravel Homestead,Socket.io连接被拒绝_Javascript_Php_Laravel_Socket.io_Homestead - Fatal编程技术网

Javascript Laravel Homestead,Socket.io连接被拒绝

Javascript Laravel Homestead,Socket.io连接被拒绝,javascript,php,laravel,socket.io,homestead,Javascript,Php,Laravel,Socket.io,Homestead,我正在使用laravel事件广播、socket.io、node.js和redis实时向客户端传递通知 代码相当简单,当我向服务器上的“/”发出get请求时,将触发一个事件,并将一些数据广播到在某个频道(测试频道)上侦听此事件的所有浏览器(客户端) Routes.php内容: Route::get('/', 'uses' => function () { Event::fire( new App\Events\UserHasRegistered('DummyData') );

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

代码相当简单,当我向服务器上的“/”发出get请求时,将触发一个事件,并将一些数据广播到在某个频道(测试频道)上侦听此事件的所有浏览器(客户端)

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监听特定的通道,出现了一个奇怪的错误

获取网络::错误连接被拒绝

客户端:

<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>

/*宅地IP地址,端口:3000节点服务器端口*/
变量套接字=io('http://192.168.10.10:3000');
/*当数据发送到客户端时*/
socket.on('test-channel:App\\Events\\userhasregisted',函数(数据){
控制台日志(数据);
//$('ul').append('
  • '+data.name+'
  • '); });
    我正在使用Windows10和Homestead虚拟盒

    有什么帮助吗?

    你试过了吗

    <script type="text/javascript" src="/js/socket.io.js"></script>
    <script>
        /*Homestead IP Address , Port:3000 Node Server Port*/
        var socket = io.connect('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>
    
    
    /*宅地IP地址,端口:3000节点服务器端口*/
    var socket=io.connect('http://192.168.10.10:3000');
    /*当数据发送到客户端时*/
    socket.on('test-channel:App\\Events\\userhasregisted',函数(数据){
    控制台日志(数据);
    //$('ul').append('
  • '+data.name+'
  • '); });
    您是否尝试通过“vagrant ssh”将ssh连接到您的虚拟机并从那里启动服务器文件?当我从windows或git命令启动服务器文件时,A遇到了同样的问题,我在VirtualBox中打开3000端口解决了这个问题。为此,您应该进入adn内的homestead设置,然后进入Network->Port Forwarding,在两个端口上都设置3000。

    是的,我设置了。。还是不走运,我认为这与homestead和nodejs服务器端口有关,因为我确实使用WAMP在homestead之外运行了这段代码,它确实工作了,所以代码没有问题嘿,检查第二个答案,这是正确的!请确保标记它,以便您可以帮助其他人,就像它帮助了我一样。我如何做到这一点?\Hi@JordyGroote,至少在Windows计算机上,打开VirtualBox,选择您的家园计算机,单击设置,然后单击网络,单击高级,选择端口转发,最后添加新的tcp规则,主机端口为3000,来宾端口为3000。告诉我你有什么问题。