nomo 0.0.44 → 0.0.45

Sign up to get free protection for your applications and to get access to all the features.
@@ -9,7 +9,10 @@ module Nomo
9
9
  record_or_options = { etag: [nomo_page.cache_key, *(layout_factors rescue nil)],
10
10
  last_modified: nomo_page.last_modified }
11
11
 
12
- response.headers['Nomo-Key'] = nomo_page.key if nomo_page.realtime?
12
+ if nomo_page.realtime?
13
+ response.headers['Nomo-Key'] = nomo_page.key
14
+ response.headers['Nomo-LastModified'] = nomo_page.last_modified.to_f
15
+ end
13
16
  end
14
17
 
15
18
  super
data/lib/nomo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Nomo
2
- VERSION = "0.0.44"
2
+ VERSION = "0.0.45"
3
3
  end
@@ -4,30 +4,50 @@ $ ->
4
4
  # Vars
5
5
 
6
6
  nomoKey = null
7
+ nomoLastModified = null
7
8
  connection = new WebSocket('ws://<%= Nomo.server ? Nomo.server : request.host %>', 'nomo')
8
9
 
9
10
  ##
10
11
  # WebSocket Connection
11
12
 
12
13
  connection.onopen = ->
14
+
15
+ # If there's already a nomoKey there could be updates we haven't received
13
16
  if nomoKey
14
- connection.send(nomoKey)
17
+ msgToServer = JSON.stringify({ key: nomoKey, lastModified: nomoLastModified })
18
+
19
+ console.log('(nomo) connected -- msg to server: ' + msgToServer)
20
+ connection.send(msgToServer)
21
+
22
+ # Else send a HEAD request so we can fetch the nomoKey
15
23
  else
24
+ console.log('(nomo) connected')
16
25
  $.ajax
17
26
  type: 'HEAD',
18
27
  dataType: 'html',
19
28
  url: document.location.pathname
20
29
 
30
+ ##
31
+ # WebSocket Message
32
+
21
33
  connection.onmessage = (msg) ->
22
- if msg.data == nomoKey
23
- $(document).trigger('nomo:update', [nomoKey])
34
+ msg = JSON.parse(msg.data)
35
+
36
+ if msg.event == 'update'
37
+ console.log('(nomo) nomo:update triggered')
38
+ $(document).trigger('nomo:update', [nomoKey, nomoLastModified])
24
39
 
25
40
  ##
26
41
  # ajaxComplete
27
42
 
28
43
  $(document).bind 'ajaxComplete', (event, xhr, options) ->
29
44
  nomoKeyHeader = xhr.getResponseHeader('Nomo-Key')
45
+ nomoLastModifiedHeader = xhr.getResponseHeader('Nomo-LastModified')
30
46
 
31
- if nomoKeyHeader && nomoKeyHeader != nomoKey
47
+ if nomoKeyHeader && (nomoKey != nomoKeyHeader)
32
48
  nomoKey = nomoKeyHeader
33
- connection.send(nomoKey)
49
+ nomoLastModified = nomoLastModifiedHeader
50
+ msgToServer = JSON.stringify({ key: nomoKey })
51
+
52
+ console.log('(nomo) page changed -- msg to server: ' + msgToServer)
53
+ connection.send(msgToServer)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nomo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.44
4
+ version: 0.0.45
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-21 00:00:00.000000000 Z
12
+ date: 2012-07-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: redis
16
- requirement: &70290983063440 !ruby/object:Gem::Requirement
16
+ requirement: &70271198519160 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70290983063440
24
+ version_requirements: *70271198519160
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: redis-namespace
27
- requirement: &70290986344160 !ruby/object:Gem::Requirement
27
+ requirement: &70271198518740 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70290986344160
35
+ version_requirements: *70271198518740
36
36
  description: 304 Not Modified Headers made easy.
37
37
  email:
38
38
  - sausman@stackd.com