blaine / xmpp4r-simple Goto Github PK
View Code? Open in Web Editor NEWJabber::Simple
License: GNU General Public License v2.0
Jabber::Simple
License: GNU General Public License v2.0
= Name Jabber::Simple - An extremely easy-to-use Jabber client library. = Synopsis # Send a message to a friend, asking for authorization if necessary: im = Jabber::Simple.new("[email protected]", "password") im.deliver("[email protected]", "Hey there friend!") # Get received messages and print them out to the console: im.received_messages { |msg| puts msg.body if msg.type == :chat } # Send an authorization request to a user: im.add("[email protected]") # Get presence updates from your friends, and print them out to the console: # (admittedly, this one needs some work) im.presence_updates { |update| from = update[0].jid.strip.to_s status = update[2].status presence = update[2].show puts "#{from} went #{presence}: #{status}" end # Remove a user from your contact list: im.remove("[email protected]") # See the Jabber::Simple documentation for more information. = Description Jabber::Simple is intended to make Jabber client programming dead simple. XMPP, the Jabber protocol, is extremely powerful but also carries a steep learning curve. This library exposes only the most common tasks, and does so in a way that is familiar to users of traditional instant messenger clients. = Known Issues * None. If you'd like additional functionality, please contact the developer! = Copyright Jabber::Simple - An extremely easy-to-use Jabber client library. Copyright 2006-2008 Blaine Cook <[email protected]>. Jabber::Simple is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Jabber::Simple is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Jabber::Simple; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Originally submitted by saimonmoore with a path included; please refer to http://code.google.com/p/xmpp4r-simple/issues/detail?id=6#makechanges
Simple usage:
im = Jabber::Simple.register(jid, passwd)
self.register(jid, password, status = nil, status_message = "Available") #So you can still provide
custom status after registration
There are several problems with the approach to testing; admittedly, Jabber isn't an easy protocol to test, but I believe every single one of the features involved in xmpp4r-simple should be mocked to include no networking, and certainly no real Jabber accounts.
This would resolve intermittent errors due to network latency et al. It would also make writing further tests much simpler (and therefore more probable). Also, it will help with having to deal with side-effects of previous tests (if there are any) due to the external dependency.
Personally, it's painful and disheartening to sit there with the tests failing due to network problems, especially when they sit there for 20 seconds for each network-sensitive test.
This is directly related to:
http://code.google.com/p/xmpp4r-simple/issues/detail?id=7#makechanges
The culprit is start_deferred_delivery_thread with the following code:
def start_deferred_delivery_thread #:nodoc:
Thread.new {
loop {
messages = [queue(:pending_messages).pop].flatten
messages.each do |message|
if subscribed_to?(message[:to])
deliver(message[:to], message[:message], message[:type])
else
queue(:pending_messages) << message
end
end
}
}
end
The loop has absolutely no sleep time and will run at max speed, continually dequeueing and queueing until there is no more CPU power left, then it keeps going until nothing else runs on your computer (unless you've got god/monit monitoring it) until the subscription actually occurs.
In my production environment, this is asynchronous, and can occur even upwards of days later, and I'd rather not have my CPU raped for that long.
On http://code.google.com/p/xmpp4r-simple/ there is a pointer to the github repo. But the given url is: http://github.com/blaine/xmppr4-simple/ which is a 404.
There's a fix for 1.9 in master, but no gem. Can you release a new version? Currently you have to install this ghetto version https://rubygems.org/gems/scashin133-xmpp4r-simple
I've noticed that occasionally, in some situations, the tests that add clients to the roster, instead of adding [email protected], will add #jabber::simple:0x0xxxxxx as the JID. This is obviously wrong.
I was not able to pinpoint where exactly the problem was originating from (which tests, specifically).
I'm on xmpp4r-simple 0.8.8 (latest gem version) and xmpp4r 0.4.
What steps will reproduce the problem?
What is the expected output? What do you see instead?
I want it to only send to the specific resource.
What version of the product are you using? On what operating system?
Ubuntu Linux + 'ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]' + xmpp4r (0.5) + xmpp4r-simple (0.8.8)
The test test_add_users_to_our_roster_should_succeed_with_automatic_approval reliably fails around line 107 (assertion that client2 is subscribed to client1).
I'm not able to get this to pass.
I have xmpp4r-simple 0.8.8 and xmpp4r 0.4 installed.
ruby 2.3.1
gem install rcov
Building native extensions. This could take a while...
ERROR: Error installing rcov:
ERROR: Failed to build gem native extension.
compiling 1.8/callsite.c
1.8/callsite.c:2:17: fatal error: env.h:
http://code.google.com/p/xmpp4r-simple/
"Please note that the source has moved to GitHub: http://github.com/blaine/xmppr4-simple/"
Also, you should ask http://xmpp.org/xmpp-software/libraries/ to link to the GitHub project page instead.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.