xmpp_server 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ *.swp
3
+ .bundle
4
+ Gemfile.lock
5
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in xmpp_server.gemspec
4
+ gemspec
@@ -0,0 +1,54 @@
1
+ ## xmpp_server
2
+ 给xmpp 服务器push 消息的中转站
3
+
4
+ ###实例
5
+ * 如何启动服务
6
+ ```shell
7
+ ./bin/xmppserver
8
+ ```
9
+ rake启动
10
+ ```ruby
11
+ rake xmppserver:start
12
+ ```
13
+
14
+ * 客户端code
15
+ ```ruby
16
+ require 'drb/drb'
17
+ SERVER_URI="druby://localhost:8787"
18
+ DRb.start_service
19
+ xmppserver = DRbObject.new_with_uri(SERVER_URI)
20
+ 3.times do |i|
21
+ xmppserver.push("tester002", "testdddeeee....")
22
+ sleep 1
23
+ end
24
+ ```
25
+
26
+ * 修改服务器地址,用户名和密码
27
+ ```ruby
28
+ XmppServer::Config.config do |s|
29
+ s.username = "zhangsan"
30
+ s.password = "xxxxxx"
31
+ s.server = "test.com"
32
+ end
33
+ ```
34
+ Rails中,可以新建`config/initializers/xmppserver.rb`
35
+
36
+ * Rails项目中的使用
37
+ 新建`config/initializers/xmppserver.rb`文件
38
+ ```ruby
39
+ require 'drb/drb'
40
+ SERVER_URI="druby://localhost:8787"
41
+ DRb.start_service
42
+ XMPPSERVER = DRbObject.new_with_uri(SERVER_URI)
43
+ XmppServer::Config.config do |s|
44
+ s.username = "zhangsan"
45
+ s.password = "xxxxxx"
46
+ s.server = "test.com"
47
+ end
48
+ ```
49
+
50
+ ###需要实现
51
+ * 一个将配置文件复制到initializers目录的generator
52
+ * 启动xmpp server 中转站的 task[start, stop , restart]
53
+ * 需要充分的测试
54
+
@@ -0,0 +1,17 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require "bundler/gem_tasks"
3
+
4
+ desc "Run all tests by default"
5
+ task :default do
6
+ system("rspec spec --color")
7
+ end
8
+
9
+ namespace :xmppserver do
10
+ desc "启动xmppserver-drb服务器"
11
+ task :start do
12
+ puts "start xmpp drb server"
13
+ path = File.expand_path("../bin",__FILE__)
14
+ file_path = File.join(path, "xmppserver")
15
+ system("#{file_path}")
16
+ end
17
+ end
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ XMPP_PATH = File.expand_path("../../lib", __FILE__)
4
+ $:.unshift(XMPP_PATH)
5
+
6
+ require "drb/drb"
7
+ require "xmpp_server"
8
+
9
+ DRB_URI = "druby://localhost:8787"
10
+ client = XmppServer::Client.get_default_client
11
+
12
+ consumer = Thread.new {
13
+ loop {
14
+ m = XmppServer::QUEUE.pop
15
+ client.push m
16
+ }
17
+ }
18
+
19
+ FRONT_OBJECT = XmppServer::Pusher.new
20
+ DRb.start_service(DRB_URI, FRONT_OBJECT)
21
+ DRb.thread.join
@@ -0,0 +1,13 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ namespace :xmppserver do
4
+
5
+ desc "启动xmppserver-drb服务器"
6
+ task :start do
7
+ puts "start xmpp drb server"
8
+ path = File.expand_path("../../../bin",__FILE__)
9
+ file_path = File.join(path, "xmppserver")
10
+ system("#{file_path}")
11
+ end
12
+
13
+ end
@@ -0,0 +1,51 @@
1
+ require "xmpp_server/version"
2
+ require "xmpp4r/client"
3
+ require "xmpp_server/config"
4
+ require "xmpp_server/queue"
5
+ require "xmpp_server/push"
6
+
7
+ require "xmpp_server/railtie" if defined?(Rails)
8
+
9
+ module XmppServer
10
+
11
+
12
+ def self.config
13
+ yield self
14
+ end
15
+
16
+ #xmpp client to push connect and push message to xmpp server
17
+ class Client
18
+ attr_accessor :jid, :password
19
+
20
+ def initialize(jid, password)
21
+ @jid = jid
22
+ @password = password
23
+ @client = Jabber::Client.new @jid
24
+ end
25
+
26
+ def connect
27
+ @client.connect
28
+ end
29
+
30
+ def auth
31
+ @client.auth @password
32
+ end
33
+
34
+ def push(m)
35
+ to = "#{m.username}@#{XmppServer::Config.server}/nickname"
36
+ msg = Jabber::Message::new(to, m.content).set_type(:normal).set_id(1)
37
+ @client.send msg
38
+ end
39
+
40
+ class << self
41
+ def get_default_client
42
+ jid = "#{XmppServer::Config.username}@#{XmppServer::Config::server}/pusher"
43
+ password = XmppServer::Config.password
44
+ client = XmppServer::Client.new(jid, password)
45
+ client.connect
46
+ client.auth
47
+ client
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,34 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ module XmppServer
4
+
5
+ class Config
6
+ @@server = "weishanke.com"
7
+ @@username = "tester001"
8
+ @@password = "123456"
9
+
10
+ class << self
11
+ def server; @@server ;end
12
+ def username; @@username; end
13
+ def password; @@password; end
14
+
15
+ def server=(server)
16
+ @@server = server
17
+ end
18
+
19
+ def username=(username)
20
+ @@username = username
21
+ end
22
+
23
+ def password=(password)
24
+ @@password = password
25
+ end
26
+
27
+ def config
28
+ yield self
29
+ end
30
+ end
31
+ end
32
+
33
+
34
+ end
@@ -0,0 +1,12 @@
1
+ # -*- encoding: utf-8 -*-
2
+ module XmppServer
3
+
4
+ #drb interface
5
+ class Pusher
6
+ def push(username, content)
7
+ m = XmppServer::M.new(username, content)
8
+ XmppServer::QUEUE.push m
9
+ end
10
+ end
11
+
12
+ end
@@ -0,0 +1,16 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ module XmppServer
4
+
5
+ QUEUE = Queue.new
6
+
7
+ #message node
8
+ class M
9
+ attr_accessor :username, :content
10
+
11
+ def initialize(username, content)
12
+ @username = username
13
+ @content = content
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,11 @@
1
+ require 'xmpp_server'
2
+ require 'rails'
3
+
4
+ module XmppServer
5
+ class Railtie < Rails::Railtie
6
+
7
+ rake_tasks do
8
+ load File.join(File.expand_path("../../tasks", __FILE__), "xmpp_server.rake")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ module XmppServer
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe "XmppServer.push" do
4
+
5
+ it "should push message to queue" do
6
+ XmppServer::Pusher.new().push("tester1", "hello world")
7
+ m = XmppServer::QUEUE.pop
8
+ m.username.should == "tester1"
9
+ m.content.should == "hello world"
10
+ end
11
+
12
+ it "push data to queue" do
13
+ 3.times do |i|
14
+ m = XmppServer::M.new("tester002", "hello #{i}")
15
+ XmppServer::QUEUE.push(m)
16
+ sleep 1
17
+ p XmppServer::QUEUE
18
+ end
19
+ end
20
+
21
+ end
@@ -0,0 +1,13 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ Bundler.require(:default, :development)
5
+
6
+ RSpec.configure do |config|
7
+ config.mock_with :rspec
8
+
9
+ config.before(:each) do
10
+ #pending
11
+ end
12
+
13
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe "push messgae to client" do
4
+
5
+ it "should push message" do
6
+ jid = "#{XmppServer::Config.username}@#{XmppServer::Config::server}/pusher"
7
+ jid.should == "tester001@weishanke.com/pusher"
8
+ password = XmppServer::Config.password
9
+ client = XmppServer::Client.new(jid, password)
10
+ m = XmppServer::M.new("tester002", "hello,man")
11
+ client.connect
12
+ client.auth
13
+ client.push m
14
+ end
15
+
16
+ it "default should could push message" do
17
+ m = XmppServer::M.new("tester002", "hello, world. default push")
18
+ client = XmppServer::Client.get_default_client
19
+ client.push m
20
+ end
21
+
22
+ end
@@ -0,0 +1,10 @@
1
+ require 'drb/drb'
2
+
3
+ SERVER_URI="druby://localhost:8787"
4
+ DRb.start_service
5
+ xmppserver = DRbObject.new_with_uri(SERVER_URI)
6
+ 3.times do |i|
7
+ xmppserver.push("tester002", "testdddeeee....")
8
+ puts i
9
+ sleep 1
10
+ end
@@ -0,0 +1,17 @@
1
+ require "spec_helper"
2
+ require 'drb/drb'
3
+
4
+ describe "xmppserver bin" do
5
+
6
+ it "should push message to drb server" do
7
+ SERVER_URI="druby://localhost:8787"
8
+ DRb.start_service
9
+ xmppserver = DRbObject.new_with_uri(SERVER_URI)
10
+ 3.times do |i|
11
+ xmppserver.push("tester002", "testdddeeee....")
12
+ puts i
13
+ sleep 1
14
+ end
15
+ end
16
+
17
+ end
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "xmpp_server/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "xmpp_server"
7
+ s.version = XmppServer::VERSION
8
+ s.authors = ["chucai"]
9
+ s.email = ["hexudong08@gmail.com"]
10
+ s.homepage = ""
11
+ s.summary = %q{Xmpp Server For Push Message}
12
+ s.description = %q{A queue for push message to xmpp server}
13
+
14
+ s.rubyforge_project = "xmpp_server"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ # specify any dependencies here; for example:
22
+
23
+ s.add_dependency "xmpp4r"
24
+
25
+ s.add_development_dependency "rspec"
26
+ # s.add_runtime_dependency "rest-client"
27
+ end
metadata ADDED
@@ -0,0 +1,86 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: xmpp_server
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - chucai
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-09-27 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: xmpp4r
16
+ requirement: &88489240 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *88489240
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ requirement: &88489030 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *88489030
36
+ description: A queue for push message to xmpp server
37
+ email:
38
+ - hexudong08@gmail.com
39
+ executables:
40
+ - xmppserver
41
+ extensions: []
42
+ extra_rdoc_files: []
43
+ files:
44
+ - .gitignore
45
+ - Gemfile
46
+ - README.md
47
+ - Rakefile
48
+ - bin/xmppserver
49
+ - lib/tasks/xmpp_server.rake
50
+ - lib/xmpp_server.rb
51
+ - lib/xmpp_server/config.rb
52
+ - lib/xmpp_server/push.rb
53
+ - lib/xmpp_server/queue.rb
54
+ - lib/xmpp_server/railtie.rb
55
+ - lib/xmpp_server/version.rb
56
+ - spec/push_spec.rb
57
+ - spec/spec_helper.rb
58
+ - spec/xmpp_spec.rb
59
+ - spec/xmppserver.rb
60
+ - spec/xmppserver_spec.rb
61
+ - xmpp_server.gemspec
62
+ homepage: ''
63
+ licenses: []
64
+ post_install_message:
65
+ rdoc_options: []
66
+ require_paths:
67
+ - lib
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ! '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ required_rubygems_version: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ requirements: []
81
+ rubyforge_project: xmpp_server
82
+ rubygems_version: 1.8.17
83
+ signing_key:
84
+ specification_version: 3
85
+ summary: Xmpp Server For Push Message
86
+ test_files: []