【发布时间】:2018-05-12 17:56:09
【问题描述】:
我无法从外部域连接到我的 node.js 服务器。它在通过节点使用 http Web 服务器在本地运行时工作正常,但是在外部连接时,它加载 socket.io.js 文件就好了,但是当尝试使用套接字时,它会从 URL 中删除端口并且无法连接。
而不是在网络请求中这样做:
http://external-domain.com:3000/socket.io/?EIO=3&transport=polling&t=M06GOUU
这样做:
http://external-domain.com/socket.io/?EIO=3&transport=polling&t=M06GOUU
我不确定如何使它不从连接中删除端口。我该如何解决这个问题?
服务器
const path = require('path');
const http = require('http');
const express = require('express');
const socketIO = require('socket.io');
const publicPath = path.join(__dirname, '../public');
var app = express();
var server = http.createServer(app);
var io = socketIO(server);
app.use(express.static(publicPath));
server.listen(3000, () => {
console.log(`Server is up on port 3000`);
});
客户脚本标签
<script src="http://external-domain.com:3000/socket.io/socket.io.js"></script>
不同域上的客户端 JS
var socket = io();
socket.connect('http://external-domain.com:3000');
socket.on('connect', function () {
console.log('Connected to server.');
});
【问题讨论】:
标签: javascript node.js socket.io