javascript - 如何为生产服务器设置套接字连接 URL?
问题描述
我正在部署生产我的 MEAN 堆栈应用程序,我有一个用于实时通知的套接字模块。但是,在检查错误时,www.example.com
我看到了这个错误POST http://www.example.com/socket.io/?EIO=3&transport=polling&t=MgkPNGk 404 (Not Found)
当我尝试连接到localhost:4444
用于与服务器进行套接字通信的端口时,我的代码在开发中按预期工作。但是,在生产中,我无法连接我的服务器和我的客户端。我已经尝试过不同的方法来实现这一点,比如
private socket = io(window.location.hostname + ':4444')
private socket = io('http://www.example.com')
private socket = io('http://www.example.com:4444')
但这似乎都不起作用。有什么我想念的吗?我确信这只是一个语法错误,但谁能给我一个如何实现这一点的例子?
// 客户端代码
import * as io from 'socket.io-client';
@Injectable({providedIn: 'root'})
export class SocketService
{
private socket = io(window.location.hostname)
// private socket = io('http://localhost:4444') <- this works in development and I cant find a solution to do it in production,
constructor(@Inject(DOCUMENT) private document,
private http: HttpClient){
console.log(window.location.hostname)
}
}
//服务器代码
var server = http.createServer(app);
var io = require('socket.io').listen(server);
var socketHelper = require('./helpers/socketHelper')(io)
server.listen(4444)
解决方案
推荐阅读
- unit-testing - SpringBoot 2.X:未创建 EmbeddedMongoServer bean
- python - Showing the total of a column without repeating values
- deployment - 如何将 elixir 应用程序从 Windows 开发机器部署到 Ubuntu 服务器
- django - 当与模型的关系因用户角色而异时,如何将具有多个角色(学生和教师)的单用户模型映射到另一个模型?
- shell - 如何根据 if 语句为新文件选择数据列?
- sql-server - TSQL Raws into Columns 按另一列分组
- javascript - Reactjs TypeError:_result2.default.fetchResult 不是函数
- laravel - Laravel 数据透视表关系数据未检索
- javascript - 为什么我的网站加载带有旧内容的 js 文件?
- java - LDAP 上的登录用户获取所有详细信息