通过websocket添加聊天到现有的PHP Web应用程序

时间:2016-12-24 20:37:04

标签: php node.js socket.io chat web-chat

我在标准的PHP / Apache平台上有一个现有的Web应用程序。现在,我想要的是添加聊天功能,我希望它是实时的websocket,并且在那个范围内,我已经研究了nodejs上的socket.io。所以除了运行大型PHP应用程序的Apache之外,我还会使用socket.io运行chat的nodejs。

但我真正理解的是,我如何识别nodejs聊天代码中的用户?首先,Apache和nodejs不能在同一个端口上运行,这意味着我将在端口8080上运行聊天,例如,在这种情况下我丢失了用户的cookie ,这意味着我现在必须要求他们再次登录这个nodejs支持的端口,如果他们想使用聊天?看起来很荒谬,但我不知道该走哪条路。

当然,我无法将整个代码移植到nodejs上。理想情况下,我希望Apache和nodejs共存。或者我只是完全误解了聊天应该如何在网络应用中发挥作用。

任何提示赞赏。

1 个答案:

答案 0 :(得分:0)

您可以使用PHP运行Apache端口3002上的端口3001和您的节点应用程序,并将nginx配置为反向代理,使它们在端口80上都可用,例如根/目录中的PHP应用程序和{{1中的节点应用程序目录,nginx配置如下:

/chat

使用SSL会稍微复杂一点,但不是那么多:

server {
    listen 80;
    server_name example.com;
    location /chat {
        proxy_pass http://localhost:3002;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
    }
    location / {
        proxy_pass http://localhost:3001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
    }
}

您的PHP和Node应用程序甚至可以在不同的服务器上运行 - 只需在nginx配置中使用它们的地址。

有关详细信息,请参阅此答案及其评论: