首页 > 解决方案 > 如何为生产服务器设置套接字连接 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)

标签: javascriptnode.jsangularsockets

解决方案


推荐阅读