node.js - EmberJS 全局 websocket 连接

标签 node.js ember.js socket.io ember-data

我正在使用 EmberJS,并且尝试使用 websocket (socket.io) 从后端获取数据,因此我设置了此应用程序路由

  App.ApplicationRoute = Ember.Route.extend(
  setupController: (controller, data) ->
    store  = @get 'store'
    socket = io.connect "http://localhost:4000/orders" ## Line 4
    socket.on "new_order", (order) ->
      store.load(App.Order, order)
    socket.on "new_billing", (bill) ->
      store.load(App.Bill, bill)
    socket.on "connected", ->
      console.log "Ready"
  model: ->
    return { title: "Ordenes" }
  actions:
    markAsDone: (type, type_id) ->
      # Send value to backend
      socket.emit "confirm_" + type,                    ## Line 16
        id: type_id
      # Find record by id
      if type == "order"
        record = App.Order.find(type_id)
        transition = "orders"
      else if type == "bill"
        record = App.Bill.find(type_id)
        transition = "bills"
      # Delete from store
      record.then( (r) ->
        r.deleteRecord()
      )
      # Display list of record type
      @transitionTo(transition)
)

在第 4 行,当我点击“/”时,正在设置连接并正在获取对象,但是在我输入路线后,“/orders”对象不再被获取,并且在上面代码中的第 16 行,我无法使用套接字变量

Uncaught ReferenceError: socket is not defined

有更好的方法来管理这个吗?

最佳答案

所以使用可重用套接字的正确方法是将其设置在 Store 中

App.Store = DS.Store.extend(
  revision: 12
  adapter: adapter
  socket: io.connect "http://localhost:4000/orders"
)

这样我就可以使用代码的任何部分访问它

socket = @get 'store.socket'

关于node.js - EmberJS 全局 websocket 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19896508/

相关文章:

javascript - 如何解决身份证提供问题

mysql - Node js 和 mysql 与 bluebird

node.js - Mongoose 更新总是给我 TypeError : Cannot set property '__v' of undefined

node.js - ioHook on Electron 消耗太多 CPU。反正周围有吗?或者替代ioHook

javascript - EmberJs : RESTAdapter could not get json file, 显示错误 404(未找到)

javascript - Ember删除记录太多递归

ember.js - ember-data findAll 在第一次请求时返回 0 条记录

mysql - Socket.io 无响应,Node.js

javascript - 如何删除超过 15 天的 Cloud Firestore 备份?

javascript - 如何使用 node.js 的 coinbase API