`
yanzilee9292
  • 浏览: 538414 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

EventMachine实现简单的服务器和客户端

    博客分类:
  • ruby
阅读更多

EventMachine是一个为ruby提供的事件驱动模型网络编程库, 就像Twisted和Python一样. 可以很容易的实现一个服务器和客户端通信的例子.

 

1. 首先安装eventmachine

gem install eventmachine

 

2. 创建一个服务器

#!/usr/bin/env ruby

require ‘rubygems’
require ‘eventmachine’

module EchoServer  
  def receive_data(data)
    send_data(data)
  end
end

EventMachine::run do
  host = ’0.0.0.0′
  port = 8080
  EventMachine::start_server host, port, EchoServer
  puts "Started EchoServer on #{host}:#{port}…"
end

 

3. 创建一个客户端

#!/usr/bin/env ruby

require ‘rubygems’
require ‘eventmachine’

module HttpHeaders 
  def post_init
    send_data "GET /\r\n\r\n"
    @data = ""
  end
  
  def receive_data(data)
    @data << data
  end
  
  def unbind
    if @data =~ /[\n][\r]*[\n]/m
      $`.each {|line| puts ">>> #{line}" }
    end
    
    EventMachine::stop_event_loop
  end
end

EventMachine::run do
  EventMachine::connect ‘127.0.0.1’, 8080, HttpHeaders
end
 
分享到:
评论

相关推荐

    同步amqp客户端_A synchronous amqp client

    综上所述,这个同步AMQP客户端库为Ruby开发人员提供了一个简单易用的工具,用于与AMQP服务器进行交互,其特点在于不依赖eventmachine,优化了消息处理和ack机制,适用于脚本和控制台环境。开发者可以通过阅读`README...

    em-websocket-master

    总的来说,“em-websocket-master”项目为Ruby开发者提供了一种基于EventMachine实现WebSocket服务器的方法,帮助他们构建高效、实时的网络应用。通过阅读项目文档和源代码,开发者可以深入了解WebSocket的工作原理...

    web-socket-ruby-master.zip_ruby socket_websock

    在Ruby编程语言中,WebSocket是一种实现全双工通信的协议,允许服务器和客户端实时、双向地交换数据。本文将深入探讨在Ruby中使用WebSocket的技术,包括`ruby_socket`和`websock`相关的知识点。 首先,让我们理解`...

    emchat-react:使用React,WebSocket API,Sinatra和EventMachine的简单Web聊天应用程序

    【描述】"emchat-react是一个使用React前端框架,结合WebSocket API进行实时通信,以及Sinatra作为后端服务器和EventMachine作为事件驱动框架构建的简单Web聊天应用程序。这个项目提供了一个直观的示例,展示了如何...

    simchat:作为 Ruby EventMachine 库的示例用法而构建的极其基本的聊天应用程序

    总的来说,Simchat 是一个简单的示例,展示了如何利用 Ruby 的 EventMachine 库创建一个聊天服务器,并使用 HTML 和 JavaScript 创建一个简单的用户界面。这对于初学者了解实时网络应用的开发流程非常有帮助。如果你...

    em-secure-api:用于在 EventMachine 之上用 Ruby 实现 API 的安全快速框架

    em-secure-api 自动验证请求的真实性、完整性和唯一性,检查客户端授权并使用简单的路由配置将 API 连接到实现。 通过解决安全性和布线问题,开发人员可以专注于构建使 API 有用的功能。 通过建立在 EventMachine ...

    TGL chatserver:Ruby中的一个聊天服务器-开源

    通过实现IRC服务器,"TGL chatserver"可以与其他标准IRC客户端兼容,让用户无需特殊软件就能参与聊天。 【标签】"开源软件" 作为开源软件,"TGL chatserver"遵循特定的开源许可协议,可能如MIT、GPL或Apache等,...

    celluloid-smtp:基于赛璐ul的简单SMTP服务器

    Celluloid-SMTP服务器的实现受到EventMachine的启发,EventMachine是另一个流行的Ruby事件库,用于构建高性能、非阻塞I/O的应用程序。然而,Celluloid-SMTP并没有直接依赖EventMachine,而是利用了Celluloid库提供的...

    Jesse.Storimer.Working.with.TCP.Sockets.Oct.2012

    作者还提供了第一个客户端/服务器交互的示例,包括服务端和客户端的实现,以及如何将这些部分整合在一起。书中还探讨了套接字选项,例如SO_TYPE和SO_REUSE_ADDR,并讲解了非阻塞IO,这是网络编程中的一个重要概念。...

    构建异步API服务

    EventMachine可以运行在MRI Ruby和其他Ruby解释器上,它提供了一个非常简单的方式来处理异步I/O操作,使得Ruby应用能够高效地处理大量的并发连接。Node.js,虽然不是Ruby环境,但它采用的事件驱动和非阻塞I/O模型在...

    Ruby-mongorubydriverMongoDBRuby驱动程序

    Ruby-mongorubydriver是MongoDB官方支持的Ruby语言客户端驱动程序,用于连接和操作MongoDB数据库。这个驱动程序提供了一套丰富的API,允许开发者在Ruby应用中方便地执行各种数据库操作,包括文档的创建、读取、更新...

    Ruby-Games:我为服务器端Ruby类所做的Ruby游戏

    6. **网络编程** - 对于网络游戏,开发者可能使用了Net::HTTP、Socket或其他网络库来实现客户端和服务器之间的通信协议,如TCP/IP、WebSocket等。 7. **游戏逻辑** - 游戏的核心算法,包括AI、碰撞检测、物理模拟等...

    async_sinatra:Sinatra的一个插件,可提供DSL扩展以使用Thin进行异步响应

    async_sinatra是一个专门为Sinatra框架设计的插件,它的主要目的是增强Sinatra应用程序的性能,通过集成 Thin 服务器实现异步处理。Sinatra是一个轻量级的Ruby web框架,它以其简洁的语法和高效的开发效率受到开发者...

    stackexchange-chatty:通过 Ruby 聊天! 写一个机器人! 用它做任何你想做的事!

    Websocket 是一种双向通信协议,允许服务器和客户端之间持续的、低延迟的数据交换。了解 Websocket 的工作原理和 Ruby 中的实现库,如 Faye 或 EventMachine,对于构建 Chatty 类的机器人至关重要。 5. **自然语言...

    integrations:主页,以获得文档和API集成示例

    Ruby可以使用`sinatra`或`rails`等框架创建简单的HTTP服务器来接收和处理这些事件。 9. **Rate limiting**:处理API的速率限制是集成中的常见挑战,需要理解并实施相应的策略,例如使用`Retry-After`头信息或第三方...

    web-scraping

    Ruby的EventMachine或Goliath框架可以帮助实现非阻塞I/O,提高抓取速度。 5. **错误处理与重试机制**:网页抓取过程中会遇到各种问题,如网络错误、服务器返回错误等,因此需要构建合适的错误处理机制,包括重试、...

Global site tag (gtag.js) - Google Analytics