服务器客户端到浏览器客户端通信

Server client to Browser client communication

这更多是概念上的理解差距,而不是技术上的差距。我是网络 socket\messaging api 的新手。 我 运行 一个使用 faye ruby 服务器的聊天应用程序,在两个 browsers.I 之间一切正常,我想从一个独立的 ruby 客户端向正在发送的浏览器客户端发送消息消息到同一服务器。是否可以从像下面这样的客户端向其脚本也在下面给出的浏览器发送消息? 这与我创建的应用程序无关,但我试图了解 WS 客户端的使用 api。或者具体地说,我可以从服务器客户端向浏览器客户端发送消息吗?我想我对这里的 'client' 这个词缺乏理解。

我在服务器控制台上看到消息,但浏览器没有收到独立客户端发送的消息。

当我 运行 客户时,我也看到了这个:

在 2015 年 4 月 9 日开始为 127.0.0.1 获取“/faye/test123”07:17:46-0400

require 'faye'
require 'eventmachine'

EM.run {
    ws = Faye::WebSocket::Client.new('ws://localhost:9292/faye/test123')
            ws.onopen = lambda do |event|
        p [:open, ws.headers]
        ws.send('987654321')
    end

    ws.on :open do |event|
        p [:open]
        ws.send('123 123 123 123')
        p [:sent]
    end
}

浏览器脚本:

window.client = new Faye.Client('http://localhost:9292/faye');

client.subscribe('/test123', function(payload){
    if(payload.message)
    {
      console.log('I am in here 77777.......'+payload.message);
      return $("#incomingText").append(payload.message);
    }
  }

查看您的代码,我认为突出显示 websockets 和 faye 之间的区别可能会有用。

Faye 是一个支持多种传输的框架,websockets 只是其中之一。例如,它也可以进行长轮询。 Faye 的好处之一是它可以 select 客户端和服务器都能理解的正确传输。它还在该传输之上实现了一个简单的 pub/sub 协议,为您提供了一个不错的 API 构建基础。

纯 websocket 实现是完全可行的,但如果你打算使用 Faye,那么使用 Faye 的 publish/subscribe API 可能是个好主意,而不是直接与 Faye 的 websockets 混在一起。

回答您的具体问题:

Is it possible to send a message from a client like the one below to a browser whose script is also given below ?

是的,当然可以,但我建议用 Faye::Client 来做。您的服务器端代码可能如下所示:

client = Faye::Client.new('http://localhost:9292/faye')

client.publish('/test123', 'message' => 'Hello world')

这里有更多信息:

http://faye.jcoglan.com/ruby/clients.html