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

图肯

我找不到使此工作可用的配置。我想通过nginx(也已经尝试过Apache)在树莓派上托管一个角度应用程序(一个棋盘游戏)和一个nodejs服务器(与棋盘游戏进行通信)。我开始感觉到nginx配置不是问题,而是我缺少的一些基本知识。

加工:

  • 本地运行Angular应用(通过ng serve)和nodejs服务器(通过ts-node ./src/app.ts
  • (通过ng serve)在树莓派上运行Angular应用(通过)本地和nodejs服务器

无法运作

  • 通过nginx托管angular应用程序(将dist文件夹的内容(由生成ng build --prod)放入var/www/html),并在树莓派上运行nodejs服务器->导致Error during WebSocket handshake: Unexpected response code: 400

Nodejs服务器

const Express = require('express')();
const Http = require('http').Server(Express);
const Socketio = require('socket.io')(Http);

Http.listen(3333, () => {
  console.log('Listening at :3333...');
});

Angular App客户端

import { SocketIoConfig, SocketIoModule } from 'ngx-socket-io';

const config: SocketIoConfig = { url: 'http://192.xxx.xxx.xx:3333', options: { transports: ['websocket'] } };

@NgModule({
  imports: [CommonModule, SocketIoModule.forRoot(config)],
  exports: [SocketIoModule]
})
export class DataAccessModule {}

Nginx配置

    server {
        location ~* \.io {
            proxy_pass http://localhost:3333;
            proxy_redirect off;

            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            add_header X-location contains-io always;
        }
    }

编辑:如果我删除我的nginx配置添加,我得到相同的结果。有没有一种方法可以测试是否使用了配置?

我发现的其他一些奇怪的事情是,当ng serve在树莓派上运行有角度的应用程序并转到以下位置时,我只看到一个空白页面,而不看到一个console.log。localhost:4200

图肯

原来我唯一需要的是dyndns,而不是localhost或静态ip。

因此客户端代码如下所示:

  private socketUrl = 'http://example.ddns.net';
 // also switched to the plain socket.io-client package instead of ngx-socket-io, but I don't think this is necessary
  socket: SocketIOClient.Socket = io(this.socketUrl);

和Nginx conf:

    server {
        listen 80;
        server_name example.ddns.net;
        root /var/www/app;

        location ^~ /socket.io/ {           
            proxy_pass http://127.0.0.1:3333;
            proxy_redirect off;

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

        location / {
            try_files $uri $uri/ /index.html;
            proxy_set_header   X-Forwarded-For $remote_addr;
            proxy_set_header   Host $http_host;
            index  index.html index.htm;
        }
    }

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

如何使用Puma和Nginx配置在子URL上托管的Rails 3应用程序?

来自分类Dev

如何对Azure上托管的Web应用程序和window的IIS服务器上托管的Web应用程序使用相同的自定义域?

来自分类Dev

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

来自分类Dev

使用Socket.io的Node.js应用程序在OpenShift托管上给出“意外响应代码:400”

来自分类Dev

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

来自分类Dev

无法在heroku上托管node.js应用程序。正在显示应用程序错误

来自分类Dev

如何将spiderable与在memory.io上托管的流星应用程序一起使用

来自分类Dev

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

来自分类Dev

使用 apahe 和 tomcat 在同一台服务器上托管 faceook 应用程序和网站

来自分类Dev

如何在node.js和socket.io应用程序中组织套接字处理

来自分类Dev

如何在Node.js和Express(和Heroku)应用程序中正确使用ipinfo.io

来自分类Dev

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

来自分类Dev

Node.js和Socket.io创建空间

来自分类Dev

在Socket IO和Node JS中轮询MySQL DB

来自分类Dev

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

来自分类Dev

Node.js应用程序侦听Openshift上托管的多个端口

来自分类Dev

在Windows上托管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渲染

Related 相关文章

  1. 1

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

  2. 2

    如何使用Puma和Nginx配置在子URL上托管的Rails 3应用程序?

  3. 3

    如何对Azure上托管的Web应用程序和window的IIS服务器上托管的Web应用程序使用相同的自定义域?

  4. 4

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

  5. 5

    使用Socket.io的Node.js应用程序在OpenShift托管上给出“意外响应代码:400”

  6. 6

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

  7. 7

    无法在heroku上托管node.js应用程序。正在显示应用程序错误

  8. 8

    如何将spiderable与在memory.io上托管的流星应用程序一起使用

  9. 9

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

  10. 10

    使用 apahe 和 tomcat 在同一台服务器上托管 faceook 应用程序和网站

  11. 11

    如何在node.js和socket.io应用程序中组织套接字处理

  12. 12

    如何在Node.js和Express(和Heroku)应用程序中正确使用ipinfo.io

  13. 13

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

  14. 14

    Node.js和Socket.io创建空间

  15. 15

    在Socket IO和Node JS中轮询MySQL DB

  16. 16

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

  17. 17

    Node.js应用程序侦听Openshift上托管的多个端口

  18. 18

    在Windows上托管node.js应用程序的最佳方法是什么?

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

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

  25. 25

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

  26. 26

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

  27. 27

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

  28. 28

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

  29. 29

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

热门标签

归档