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.
- data/.gitignore +5 -0
- data/Gemfile +4 -0
- data/README.md +54 -0
- data/Rakefile +17 -0
- data/bin/xmppserver +21 -0
- data/lib/tasks/xmpp_server.rake +13 -0
- data/lib/xmpp_server.rb +51 -0
- data/lib/xmpp_server/config.rb +34 -0
- data/lib/xmpp_server/push.rb +12 -0
- data/lib/xmpp_server/queue.rb +16 -0
- data/lib/xmpp_server/railtie.rb +11 -0
- data/lib/xmpp_server/version.rb +3 -0
- data/spec/push_spec.rb +21 -0
- data/spec/spec_helper.rb +13 -0
- data/spec/xmpp_spec.rb +22 -0
- data/spec/xmppserver.rb +10 -0
- data/spec/xmppserver_spec.rb +17 -0
- data/xmpp_server.gemspec +27 -0
- metadata +86 -0
data/Gemfile
ADDED
data/README.md
ADDED
@@ -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
|
+
|
data/Rakefile
ADDED
@@ -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
|
data/bin/xmppserver
ADDED
@@ -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
|
data/lib/xmpp_server.rb
ADDED
@@ -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
|
data/spec/push_spec.rb
ADDED
@@ -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
|
data/spec/spec_helper.rb
ADDED
data/spec/xmpp_spec.rb
ADDED
@@ -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
|
data/spec/xmppserver.rb
ADDED
@@ -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
|
data/xmpp_server.gemspec
ADDED
@@ -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: []
|