2009-04-02 15:49:11 +00:00
|
|
|
|
|
|
|
# Gibberish
|
|
|
|
|
|
|
|
A basic module for IM using the Jabber/XMPP protocol with PLT Scheme.
|
|
|
|
|
|
|
|
## Protocol Support
|
|
|
|
|
2009-04-02 16:02:30 +00:00
|
|
|
Should eventually implement XMPP-Core and XMPP-IM to conform with RFCs
|
|
|
|
3920 and 3921. Progress toward supporting the full protocol is
|
2009-04-03 09:05:10 +00:00
|
|
|
currently documented in the file 'xmpp.ss'
|
2009-04-03 08:48:50 +00:00
|
|
|
|
|
|
|
## Installation
|
|
|
|
|
2009-04-03 09:05:10 +00:00
|
|
|
(require (planet zzkt/gibberish:1:0/xmpp))
|
2009-04-02 16:02:30 +00:00
|
|
|
|
2009-04-03 08:48:50 +00:00
|
|
|
## Example Chat Client
|
2009-04-02 15:49:11 +00:00
|
|
|
|
2009-04-02 16:02:30 +00:00
|
|
|
(require xmpp)
|
2009-04-02 15:49:11 +00:00
|
|
|
|
2009-04-02 16:02:30 +00:00
|
|
|
(define (read-input prompt)
|
|
|
|
(display prompt)
|
|
|
|
(read-line (current-input-port)))
|
2009-04-02 15:49:11 +00:00
|
|
|
|
2009-04-02 16:02:30 +00:00
|
|
|
(define (chat)
|
|
|
|
(let ((jid (read-input "jid: "))
|
|
|
|
(pass (read-input "password: "))
|
|
|
|
(to (read-input "chat with: ")))
|
|
|
|
(with-xmpp-session jid pass
|
|
|
|
(set-xmpp-handler 'message print-message)
|
|
|
|
(let loop ()
|
|
|
|
(let ((msg (read-line (current-input-port))))
|
|
|
|
(send (message to msg))
|
|
|
|
(loop))))))
|
2009-04-02 15:49:11 +00:00
|
|
|
|
2009-04-03 08:48:50 +00:00
|
|
|
|
2009-04-02 15:59:27 +00:00
|
|
|
## possiby interesting extensions to implement.
|
|
|
|
|
|
|
|
see http://xmpp.org/extensions/
|
2009-04-02 15:49:11 +00:00
|
|
|
|
|
|
|
* XEP-0047: In-Band Bytestreams
|
|
|
|
* XEP-0066: Out of Band Data
|
|
|
|
* XEP-0030: Service Discovery
|
|
|
|
* XEP-0060: Publish-Subscribe
|
|
|
|
* XEP-0045: Multi-User Chat
|
|
|
|
* XEP-0149: Time Periods
|
|
|
|
* XEP-0166: Jingle
|
|
|
|
* XEP-0174: Serverless Messaging
|
|
|
|
* XEP-0199: XMPP Ping
|
|
|
|
* XEP-0224: Attention
|
|
|
|
* XEP-0077: In-Band Registration
|
|
|
|
|
2009-04-02 16:02:30 +00:00
|
|
|
|