使用Cloud Foundry和NginX Build Pack扩展Socket.io Node.js应用

托比亚斯

我正在尝试使用Cloud Foundry(在IBM Cloud上)水平扩展Socket.io Node.js服务器。

到目前为止,我的cf的manifest.yml如下所示:

applications:
  - name: chat-app-server
    memory: 512M
    instances: 2
    buildpacks:
      - nginx_buildpack

这样就可以完成部署,但是由于连接不是粘性的,因此客户端和服务器之间的套接字连接当然会失败。

官方的Socket.io文档提供了一个使用NginX来使用多个节点的示例。使用通过Socket.io模板使用自定义nginx.conf文件时,我缺少一些信息(以???突出显示)。

events { worker_connections 1024; }

http {

  server {
    listen {{port}};
    server_name ???;

    location / {


        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;

        proxy_pass http://nodes;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

  }

    upstream nodes {
       # enable sticky session based on IP
       ip_hash;

       server ???:???;
       server ???:???;
  }
}

我试图找出Cloud Foundry在哪里运行manifest.yml文件中指定的两个实例,但是没有运气。

如何从Cloud Foundry获取所需的服务器地址/端口?有没有办法从CF动态获取此信息?

我正在使用部署我的应用程序cf push

丹尼尔·米库萨(Daniel Mikusa)

我以前没有使用过Socket.IO,所以我可能不满意,但是从快速阅读文档开始,似乎一切都可以正常进行。

来自文档的两点:

a。)使用WebSockets时,这不是问题。Cloud Foundry完全支持WebSockets。希望您的大多数客户都能做到这一点。

b。)当退回长时间轮询时,您需要进行粘性会话。Cloud Foundry开箱即用地支持粘性会话,因此,再次可以使用。关于CF对粘性会话的支持,有一个警告,它期望会话cookie名称为JSESSIONID

同样,我对Socket.IO不太熟悉,但是我怀疑默认情况下它可能使用的是不同的会话cookie名称(Java之外的大多数东西都使用)。您只需要将会话Cookie名称更改为JSESSIONID,便可以使用粘性会话。

提示:您可以通过在浏览器的开发工具中查看cookie来检查会话cookie名称。

最后说明。您根本不需要Nginx。Cloud Foundry的路由层Gorouter将为您处理粘性会话支持。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Nginx,Socket.io和Node.js在树莓派上托管Angular应用程序

来自分类Dev

使用node.js和socket.io的私人聊天

来自分类Dev

Node.js,socket.io和mongojs-使用socket.io登录表单

来自分类Dev

Node.js和socket.io在Cloud9 IDE上不起作用

来自分类Dev

Node.js和socket.io在Cloud9 IDE上不起作用

来自分类Dev

Node.js和Socket.io-动态socket.on()

来自分类Dev

如何使用webRTC,node.js和socket.io构建多用户视频聊天Web应用程序

来自分类Dev

Nginx + Node.js + Socket.io + SSL是否可行?

来自分类Dev

使用socket.io和不使用cookie来管理node.js中的会话

来自分类Dev

如何使用Socket.io和Node.js发出事件?

来自分类Dev

使用node.js和socket.io在密钥之间创建私人聊天

来自分类Dev

使用node.js和socket.io每秒进行广播

来自分类Dev

使用Node.js和Socket.IO服务静态文件

来自分类Dev

想要在Android中使用node.js和socket.io发送图像

来自分类Dev

Node.js-在同一端口上使用Socket.io和Express

来自分类Dev

使用Socket.io + Puppeteer + Node.js用HTML和CSS创建PDF

来自分类Dev

将Socket.io与Node.js,Express和Jade结合使用

来自分类Dev

如何使用Express和Socket.IO设置Node.JS?

来自分类Dev

将Node.JS与ASP.NET WebForm和Socket.IO一起使用

来自分类Dev

使用Node.js和socket.io进行ejs渲染

来自分类Dev

使用Socket.io和Node.js将更新发送给用户

来自分类Dev

Node.js使用Socket.io和Http从Express读取发布数据

来自分类Dev

使用Node.js和Socket.io发送私人消息

来自分类Dev

事件不会在使用 Node js 和 socket.io 的客户端上触发

来自分类Dev

使用 Node.js、Socket.IO 和 Express 提供静态 JavaScript 文件

来自分类Dev

使用集群将 Socket.IO 扩展到多个 Node.js 进程时的一些问题

来自分类Dev

无法使用Lighttpd访问Raspberry Pi上的socket.io.js [Node.JS&Socket.IO]

来自分类Dev

Node.js和Socket.io创建空间

来自分类Dev

在Socket IO和Node JS中轮询MySQL DB

Related 相关文章

  1. 1

    使用Nginx,Socket.io和Node.js在树莓派上托管Angular应用程序

  2. 2

    使用node.js和socket.io的私人聊天

  3. 3

    Node.js,socket.io和mongojs-使用socket.io登录表单

  4. 4

    Node.js和socket.io在Cloud9 IDE上不起作用

  5. 5

    Node.js和socket.io在Cloud9 IDE上不起作用

  6. 6

    Node.js和Socket.io-动态socket.on()

  7. 7

    如何使用webRTC,node.js和socket.io构建多用户视频聊天Web应用程序

  8. 8

    Nginx + Node.js + Socket.io + SSL是否可行?

  9. 9

    使用socket.io和不使用cookie来管理node.js中的会话

  10. 10

    如何使用Socket.io和Node.js发出事件?

  11. 11

    使用node.js和socket.io在密钥之间创建私人聊天

  12. 12

    使用node.js和socket.io每秒进行广播

  13. 13

    使用Node.js和Socket.IO服务静态文件

  14. 14

    想要在Android中使用node.js和socket.io发送图像

  15. 15

    Node.js-在同一端口上使用Socket.io和Express

  16. 16

    使用Socket.io + Puppeteer + Node.js用HTML和CSS创建PDF

  17. 17

    将Socket.io与Node.js,Express和Jade结合使用

  18. 18

    如何使用Express和Socket.IO设置Node.JS?

  19. 19

    将Node.JS与ASP.NET WebForm和Socket.IO一起使用

  20. 20

    使用Node.js和socket.io进行ejs渲染

  21. 21

    使用Socket.io和Node.js将更新发送给用户

  22. 22

    Node.js使用Socket.io和Http从Express读取发布数据

  23. 23

    使用Node.js和Socket.io发送私人消息

  24. 24

    事件不会在使用 Node js 和 socket.io 的客户端上触发

  25. 25

    使用 Node.js、Socket.IO 和 Express 提供静态 JavaScript 文件

  26. 26

    使用集群将 Socket.IO 扩展到多个 Node.js 进程时的一些问题

  27. 27

    无法使用Lighttpd访问Raspberry Pi上的socket.io.js [Node.JS&Socket.IO]

  28. 28

    Node.js和Socket.io创建空间

  29. 29

    在Socket IO和Node JS中轮询MySQL DB

热门标签

归档