【问题标题】:Sails.js Socket Issue on Google App EngineGoogle App Engine 上的 Sails.js 套接字问题
【发布时间】:2015-05-31 03:37:13
【问题描述】:

我在 Google App Engine 的托管 VM 上运行 Sails.js (v0.11.0),一切正常只要我禁用套接字。我正在使用默认的 Sails 项目,其中一个模型(用户)没有自定义属性,我只是在浏览器中访问主页。我在 Chrome 的控制台窗口中看到以下内容;

WebSocket connection to 'ws://localhost:8080/socket.io/?__sails_io_sdk_version=0.11.0&__sails_io_sdk_platform=browser&__sails_io_sdk_language=javascript&EIO=3&transport=websocket&sid=GShPZd_tjzqnrigNAAAA' failed: Error during WebSocket handshake: 'Upgrade' header is missing
sails.io.js:143 

  |>    Now connected to Sails.
\___/   For help, see: http://bit.ly/1DmTvgK
        (using browser SDK @v0.11.0)



4(index):1 Font from origin 'http://sailsjs.org' has been blocked from loading by Cross-Origin Resource Sharing policy: The 'Access-Control-Allow-Origin' header contains the invalid value ''. Origin 'http://localhost:8080' is therefore not allowed access.
sails.io.js:4 POST http://localhost:8080/socket.io/?__sails_io_sdk_version=0.11.0&__sails_io_s…ascript&EIO=3&transport=polling&t=1427404282042-3&sid=GShPZd_tjzqnrigNAAAA 503 (Service Unavailable)
sails.io.js:143  Failed to connect socket (probably due to failed authorization on server) Error: Error: xhr post error {type: "TransportError", description: 503, stack: (...), message: "xhr post error"}
sails.io.js:143  ====================================
sails.io.js:143  Socket was disconnected from Sails.
sails.io.js:143  Usually, this is due to one of the following reasons:
 -> the server was taken down
 -> your browser lost internet connectivity
sails.io.js:143  ====================================
sails.io.js:143  
        Socket is trying to reconnect to Sails...
_-|>_-  (attempt #1)


sails.io.js:4 POST http://localhost:8080/socket.io/?__sails_io_sdk_version=0.11.0&__sails_io_s…ascript&EIO=3&transport=polling&t=1427404302073-4&sid=GShPZd_tjzqnrigNAAAA 503 (Service Unavailable)
sails.io.js:4 GET http://localhost:8080/socket.io/?__sails_io_sdk_version=0.11.0&__sails_io_s…sails_io_sdk_language=javascript&EIO=3&transport=polling&t=1427404303080-5 503 (Service Unavailable)

“缺少升级标头”似乎是罪魁祸首,但我不明白标头是如何从 Socket.io 要求的任何内容中更改的,我有一个 app.yaml 文件,它只允许通过所有流量去航行。

#app.yaml
module: default
version: 1
runtime: custom
api_version: 1
vm: true
manual_scaling:
    instances: 1

handlers:
    - url: /.*
    script: app.js

非常感谢任何帮助!

干杯! R.

【问题讨论】:

    标签: node.js google-app-engine socket.io sails.js


    【解决方案1】:

    我认为您无法开箱即用地使用 Sails 的网络套接字。 Google App Engine 不是我熟悉的东西,但看来您需要将他们的 API 用于 Web 套接字。看这个例子:

    https://github.com/thebergamo/appengine-websocket-nodejs

    在做了更多的探索之后,我最终看到了这篇文章,它几乎是这篇文章的复制品,应该会给你更多的线索。简短的回答是,您需要有一个单独的 Google 托管 VM 来运行您的 Web 套接字服务,然后您可以通过 IP 地址直接访问它,这似乎使使用 Sails 的所有乐趣都消失了。

    Run Websocket on GAE

    【讨论】:

    • 感谢 HeadCode,它确实看起来确实如此。如果在接下来的几天内没有人能做出相反的回答,我会认为这是正确的。
    • 目前无法使其正常工作,websockets 不适用于 GAE:stackoverflow.com/questions/36116039/…。似乎改用计算引擎
    猜你喜欢
    • 2018-01-23
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    相关资源
    最近更新 更多