所以我有一个使用socket.io和expressjs
的nodejs应用程序我使用端口'3000'作为快递应用程序,使用端口'8080'作为套接字应用程序
是否可以为这两种服务使用相同的端口?(express和socket.io)
当我想从客户端连接到套接字时,我使用以下代码:
var socket = io('http://localhost:8080')
是否有正确的连接方式(我在互联网上的教程中看到了各种方式)并且没有任何线索。
答案 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>
推荐的
答案 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