expressJS和socket.io监听不同的端口和socket.io客户端连接

时间:2017-01-19 08:46:19

标签: node.js express socket.io

所以我有一个使用socket.io和expressjs

的nodejs应用程序

我使用端口'3000'作为快递应用程序,使用端口'8080'作为套接字应用程序

  1. 是否可以为这两种服务使用相同的端口?(express和socket.io)

  2. 当我想从客户端连接到套接字时,我使用以下代码:

    var socket = io('http://localhost:8080')

  3. 是否有正确的连接方式(我在互联网上的教程中看到了各种方式)并且没有任何线索。

3 个答案:

答案 0 :(得分:0)

你可以在服务器端执行类似这样的操作,只需通过你的应用程序

var    app = require('express').createServer();
var io = require('socket.io')(app);

app.listen(8080);

您的客户方

    <script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost');
  socket.on('news', function (data) {
    console.log(data);
    socket.emit('my other event', { my: 'data' });
  });
</script>

这是socket.io

推荐的

答案 1 :(得分:0)

是的,两者都可以使用相同的端口。实际上,您应该使用相同的端口使客户端在发送请求时连接到您的Web套接字。 Socket.io docs有关于如何连接express的教​​程。

来自socket.io docs的代码:

var app = require('express').createServer();
var io = require('socket.io')(app);

app.listen(80);

app.get('/', function (req, res) {
  res.sendfile(__dirname + '/index.html');
});

io.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});

如果要使用express-generator生成的模板连接套接字,请执行以下操作: stackoverflow post

答案 2 :(得分:0)

  

是否可以为这两种服务使用相同的端口?(express和socket.io)

var app = require('express')();
var server = require('http').createServer(app);
var io = require('socket.io')(server);

server.listen(8080); //or 3000
  

当我想从客户端连接到套接字时,我使用以下代码:

在前端:

包括socket.io lib

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost:8080'); //or 3000
</script>

编辑: 没有快递

var app = require('express').createServer();
var io = require('socket.io')(app);

app.listen(8080);

了解更多信息socket.io