2017-02-17 150 views
0

我已经将this包含到了我的项目中,该项目允许在我的项目中使用socket io库。我将发布部分代码流星和插座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端口?

回答

0

我从来没有这个问题,你可以仔细检查你的代码是启动服务器?例如低于

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

感谢您的回复,但是我使用流星请参阅https://github.com/Akryum/meteor-socket-io服务器示例 – David

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"); 
}) 
0

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

该解决方案似乎至今的作品,但我不知道这是否是一个感伤d实践。