【问题标题】:Browser displays "Upgrade Required" when running this program运行此程序时浏览器显示“需要升级”
【发布时间】:2018-01-29 17:33:53
【问题描述】:

所以我现在搜索了一周,尝试了其他帖子或论坛中的所有解决方案,仍然没有,所以是的,我需要帮助..拜托。

节点是最新的,如果那很重要的话。供参考。 v9.4.0

如果你们还有什么需要知道的,请告诉我。

'use strict'

var EventEmitter = require('events').EventEmitter
var util = require('util')

var WebSocketServer = require('ws').Server

var CONNECTION_ERROR_LOG_RATE = 1000 * 60 * 60

var Browser = function () {
  if (!(this instanceof Browser)) return new Browser()
  EventEmitter.call(this)
  this.wss = null
  this.ws = null
  this.lastConnectionErrorLog = null
}

util.inherits(Browser, EventEmitter)

Browser.prototype.listen = function listen (port) {
  console.log('Listening on websocket port %d', port)
  this.wss = new WebSocketServer({port, host: '127.0.0.1'})

  var self = this
  this.wss.on('connection', function (ws) {
    self.ws = ws

    ws.on('message', function (data) {
      var res = JSON.parse(data)
      self.emit('message', res)
    })
    self.lastConnectionErrorLog = null
    self.emit('connected')
  })
  this.wss.on('close', function () {
    self.emit('closed')
  })
  this.wss.on('error', function (err) {
    self.emit('error', err)
  })
}

Browser.prototype.isConnected = function isConnected () {
  return !!this.ws
}

Browser.prototype.send = function send (req) {
  if (!this.ws) {
    var elapsed = this.lastConnectionErrorLog === null ||
      Date.now() - this.lastConnectionErrorLog > CONNECTION_ERROR_LOG_RATE
    if (elapsed) {
      console.log('browser not connected')
      this.lastConnectionErrorLog = Date.now()
    }
    return
  }

  var self = this
  var message = JSON.stringify(req)
  this.ws.send(message, function (err) {
    if (err) {
      var elapsed = self.lastConnectionErrorLog === null ||
        Date.now() - self.lastConnectionErrorLog > CONNECTION_ERROR_LOG_RATE
      if (elapsed) {
        self.lastConnectionErrorLog = Date.now()
        self.emit('messageError', err)
      }
    } else {
      self.emit('messageSent')
    }
  })
}

module.exports = Browser

我对 Websockets/Node/Javascript 有点陌生,所以答案可能很简单.. 我提前道歉 谢谢你

【问题讨论】:

    标签: javascript node.js browser websocket


    【解决方案1】:

    您看到的错误是因为您正在向 WebSockets 服务器发送非 WebSocket 请求(即来自 Web 浏览器的正常 HTTP 请求)。

    要在浏览器中连接到 WebSockets 服务器,您需要在 Javascript 中使用 WebSocket 接口。

    【讨论】:

    • 究竟如何?我使用 WS 作为处理 WebSockets 的 NodeModule
    【解决方案2】:

    您发布的代码不包含字符串“需要升级”,因此问题一定来自其他地方。由于您使用的是 Node/NPM,因此通常很容易找出这个问题 的来源。只需使用 IDE 搜索项目目录中的所有文件(包括 node_modules 文件夹),即可查看“需要升级”字符串的位置。这至少会指出哪个组件触发了该错误,并指出在哪里寻找进一步的故障排除和/或升级。

    【讨论】:

      猜你喜欢
      • 2016-07-06
      • 1970-01-01
      • 2010-09-29
      • 2011-01-04
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      • 2019-02-04
      • 2016-09-17
      相关资源
      最近更新 更多