【问题标题】:Meteor and Socket IO portsMeteor 和 Socket IO 端口
【发布时间】:2017-07-06 16:02:23
【问题描述】:

我已将this 包含在我的项目中,它允许在我的项目中使用socket io 库。我将发布我的部分代码

 // Start server
  try {
    server.listen(8080);
      console.log("Server is litsnening for 8080 port");
  } catch (e) {
    console.error(e);
  }

所以你可以看到我的服务器正在监听 8080 端口。问题是当我使用 meteor 命令为我的流星应用程序加注星标时,它在端口 3000 上启动。 http://localhost:3000/ 那么现在我如何告诉客户端连接到 8080 端口呢?如果我可以使用相同的端口,那就太棒了,但这是不可能的。那么服务器是如何监听连接的呢? 3000 还是 8080 端口?

【问题讨论】:

    标签: node.js meteor networking socket.io port


    【解决方案1】:

    我从来没有遇到过这个问题,你能仔细检查一下你的启动服务器的代码吗?例如下面

    var app = require('http').createServer(handler)
    var io = require('socket.io')(app);
    app.listen(8001);
    

    【讨论】:

    【解决方案2】:

    我认为你在混淆视听。 使用 socket.io,您将在服务器上打开一个新的侦听端口,因此您的应用程序将公开 2 个端口,一个用于 Meteor,另一个用于 socket.io。 首先,meteor 现在支持 npm 包,因此您可以直接使用 socket.io npm 包(因此您将获得最新版本)。 如果服务器没有记录:

    console.log("Server is litsnening for 8080 port");
    

    我会检查您是否真的包含/运行了那段代码,如果您想确定该端口是否打开,请使用所有平台都可用的netstat 命令(根据您的平台检查参数)。在 Linux 中,命令是:

    sudo netstat -lp

    在您的客户端中,您必须通过以下方式连接到 socket.io 服务器:

    var socket = Npm.require('socket.io-client')(url);
    
    socket.on('connect', function(){
        console.log("Connected");
    });
    socket.on('disconnect', function(){
        console.log("Disconnected");
    })
    

    【讨论】:

      【解决方案3】:

      我有点晚了,但今天我需要在一个流星应用程序中实现 socket.io,我想为两者使用相同的端口

      import { WebApp } from 'meteor/webapp';
      import socketIO from 'socket.io';
      
      const io = socketIO(WebApp.httpServer);
      
      io.on('connection', function(socket) {
        console.log('new socket client');
      });
      

      到目前为止,这个解决方案似乎有效,但我不知道这是否是一个好的做法。

      【讨论】:

      • 非常适合我!谢谢。
      猜你喜欢
      • 2019-10-28
      • 1970-01-01
      • 2019-10-03
      • 2015-01-27
      • 2018-01-13
      • 1970-01-01
      • 2020-02-23
      • 1970-01-01
      • 2021-05-05
      相关资源
      最近更新 更多