流星和套接字IO端口

时间:2017-02-17 08:12:29

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

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

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

因此,您可以看到我的服务器正在侦听8080端口。问题是,当我使用meteor命令为我的流星应用程序加注时,它在端口3000上启动。 enter image description here http://localhost:3000/那么现在如何告诉客户端在8080端口连接?如果我可以使用相同的端口,那将是非常棒的,但这是不可能的。那么服务器如何监听连接? 3000或8080端口?

3 个答案:

答案 0 :(得分:1)

我有点晚了但今天我需要在流星应用中实现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');
});

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

我认为你正在制造混乱。 使用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");
})