Compare commits
21 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f7f52d7525 | ||
|
|
ab383e1ada | ||
|
|
31ae24d256 | ||
|
|
9d30f4f75d | ||
|
|
be2745be25 | ||
|
|
b9dcad7642 | ||
|
|
a6b9ebb774 | ||
|
|
286835fa92 | ||
|
|
b76a6c2383 | ||
|
|
b79a3142d1 | ||
|
|
6965cb661c | ||
|
|
4a47dd80c7 | ||
|
|
f7a121225b | ||
|
|
b918a6c8d5 | ||
|
|
b733f574ec | ||
|
|
6a298da54b | ||
|
|
8c6d3db9e8 | ||
|
|
fbdc8146b7 | ||
|
|
1e9e5dc098 | ||
|
|
f0e297c1a6 | ||
|
|
879ea2ba95 |
4 changed files with 149 additions and 26 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -1 +1 @@
|
|||
/em-websocket-0.5.1.gem
|
||||
/em-websocket-*.gem
|
||||
|
|
|
|||
67
em-websocket-client.rb
Normal file
67
em-websocket-client.rb
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
require 'eventmachine'
|
||||
require 'uri'
|
||||
require 'websocket'
|
||||
|
||||
module EventMachine
|
||||
class WebSocketClient < Connection
|
||||
include Deferrable
|
||||
|
||||
attr_accessor :url
|
||||
attr_accessor :protocol_version
|
||||
attr_accessor :origin
|
||||
|
||||
def self.connect(uri, opts={})
|
||||
p_uri = URI.parse(uri)
|
||||
conn = EM.connect(p_uri.host, p_uri.port || 80, self) do |c|
|
||||
c.url = uri
|
||||
c.protocol_version = opts[:version]
|
||||
c.origin = opts[:origin]
|
||||
end
|
||||
end
|
||||
|
||||
def post_init
|
||||
@handshaked = false
|
||||
@frame = ::WebSocket::Frame::Incoming::Client.new
|
||||
end
|
||||
|
||||
def connection_completed
|
||||
@connect.yield if @connect
|
||||
@hs = ::WebSocket::Handshake::Client.new(:url => @url,
|
||||
:origin => @origin,
|
||||
:version => @protocol_version)
|
||||
send_data @hs.to_s
|
||||
end
|
||||
|
||||
def stream &cb; @stream = cb; end
|
||||
def connected &cb; @connect = cb; end
|
||||
def disconnect &cb; @disconnect = cb; end
|
||||
|
||||
def receive_data data
|
||||
if !@handshaked
|
||||
@hs << data
|
||||
if @hs.finished?
|
||||
@handshaked = true
|
||||
succeed
|
||||
end
|
||||
|
||||
receive_data(@hs.leftovers) if @hs.leftovers
|
||||
else
|
||||
@frame << data
|
||||
while msg = @frame.next
|
||||
@stream.call(msg) if @stream
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def send_msg(s, args={})
|
||||
type = args[:type] || :text
|
||||
frame = ::WebSocket::Frame::Outgoing::Client.new(:data => s, :type => type, :version => @hs.version)
|
||||
send_data frame.to_s
|
||||
end
|
||||
|
||||
def unbind
|
||||
super
|
||||
@disconnect.call if @disconnect
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -1,18 +1,26 @@
|
|||
# Generated from em-websocket-0.5.1.gem by gem2rpm -*- rpm-spec -*-
|
||||
# Generated from em-websocket-0.5.3.gem by gem2rpm -*- rpm-spec -*-
|
||||
%global gem_name em-websocket
|
||||
|
||||
Name: rubygem-%{gem_name}
|
||||
Version: 0.5.1
|
||||
Release: 3%{?dist}
|
||||
Version: 0.5.3
|
||||
Release: 7%{?dist}
|
||||
Epoch: 1
|
||||
Summary: EventMachine based WebSocket server
|
||||
License: MIT
|
||||
URL: http://github.com/igrigorik/em-websocket
|
||||
Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem
|
||||
# Test suite depends on specific version of em-websocket-client
|
||||
# that isn't pushed into master branch:
|
||||
# https://github.com/igrigorik/em-websocket/blob/master/Gemfile#L5
|
||||
# Luckily, the package is actually just one small file:
|
||||
# https://github.com/movitto/em-websocket-client/blob/expose-websocket-api/lib/em-websocket-client.rb
|
||||
Source1: https://raw.githubusercontent.com/movitto/em-websocket-client/expose-websocket-api/lib/em-websocket-client.rb
|
||||
BuildRequires: ruby(release)
|
||||
BuildRequires: rubygems-devel
|
||||
BuildRequires: ruby
|
||||
BuildRequires: rubygem(rspec)
|
||||
BuildRequires: rubygem(em-http-request)
|
||||
BuildRequires: rubygem(em-websocket-client)
|
||||
BuildRequires: rubygem(em-spec)
|
||||
BuildRequires: rubygem(http_parser.rb)
|
||||
BuildArch: noarch
|
||||
|
|
@ -30,15 +38,12 @@ BuildArch: noarch
|
|||
Documentation for %{name}.
|
||||
|
||||
%prep
|
||||
gem unpack %{SOURCE0}
|
||||
|
||||
%setup -q -D -T -n %{gem_name}-%{version}
|
||||
|
||||
gem spec %{SOURCE0} -l --ruby > %{gem_name}.gemspec
|
||||
%setup -q -n %{gem_name}-%{version}
|
||||
|
||||
%build
|
||||
# Create the gem as gem install only works on a gem file
|
||||
gem build %{gem_name}.gemspec
|
||||
%gemspec_add_dep -g base64 ">= 0.2.0"
|
||||
gem build ../%{gem_name}-%{version}.gemspec
|
||||
|
||||
# %%gem_install compiles any C extensions and installs the gem into ./%%gem_dir
|
||||
# by default, so that we can move it into the buildroot in %%install
|
||||
|
|
@ -49,27 +54,18 @@ mkdir -p %{buildroot}%{gem_dir}
|
|||
cp -a .%{gem_dir}/* \
|
||||
%{buildroot}%{gem_dir}/
|
||||
|
||||
|
||||
|
||||
%check
|
||||
pushd .%{gem_instdir}
|
||||
# we do not have packages needed for tests in fedora
|
||||
sed -i '/em-http/ s/^/#/' spec/helper.rb
|
||||
sed -i '/em-websocket-client/ s/^/#/' spec/helper.rb
|
||||
|
||||
mv spec/integration/common_spec.rb{,.bak}
|
||||
mv spec/integration/draft75_spec.rb{,.bak}
|
||||
|
||||
rspec spec
|
||||
rspec -I %{dirname:%{SOURCE1}} spec
|
||||
popd
|
||||
|
||||
%files
|
||||
%dir %{gem_instdir}
|
||||
%exclude %{gem_instdir}/.gitignore
|
||||
%exclude %{gem_instdir}/em-websocket.gemspec
|
||||
%{gem_libdir}
|
||||
%exclude %{gem_cache}
|
||||
%{gem_spec}
|
||||
%license %{gem_instdir}/LICENCE
|
||||
|
||||
%files doc
|
||||
%doc %{gem_docdir}
|
||||
|
|
@ -77,15 +73,75 @@ popd
|
|||
%{gem_instdir}/Gemfile
|
||||
%doc %{gem_instdir}/README.md
|
||||
%{gem_instdir}/Rakefile
|
||||
%{gem_instdir}/em-websocket.gemspec
|
||||
%{gem_instdir}/examples
|
||||
%{gem_instdir}/spec
|
||||
|
||||
%changelog
|
||||
* Fri May 11 2018 Jaroslav Prokop <jar.prokop@volny.cz> - 1:0.5.1-3
|
||||
- The package does not have packages needed for tests in f28
|
||||
* Fri Jul 25 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1:0.5.3-7
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
|
||||
|
||||
* Thu Apr 5 2018 Jaroslav Prokop <jar.prokop@volny.cz> - 0.5.1-2
|
||||
- Enable test suites after needed packages were imported to Fedora.
|
||||
* Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1:0.5.3-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
|
||||
|
||||
* Mon Nov 18 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1:0.5.3-5
|
||||
- Add runtime dependency for base64 explicitly for ruby34
|
||||
|
||||
* Fri Jul 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1:0.5.3-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
|
||||
|
||||
* Fri Jan 26 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1:0.5.3-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Mon Jan 22 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1:0.5.3-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Mon Jul 31 2023 Jarek Prokop <jprokop@redhat.com> - 1:0.5.3-1
|
||||
- Upgrade to em-websocket 0.5.3.
|
||||
Resolves: rhbz#2227733
|
||||
|
||||
* Fri Jul 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1:0.5.2-7
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1:0.5.2-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||
|
||||
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1:0.5.2-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
||||
* Fri Jan 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1:0.5.2-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||
|
||||
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1:0.5.2-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||
|
||||
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1:0.5.2-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
* Tue Oct 13 11:47:40 CEST 2020 Pavel Valena <pvalena@redhat.com> - 1:0.5.2-1
|
||||
- Update to em-websocket 0.5.2.
|
||||
Resolves: rhbz#1882156
|
||||
|
||||
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1:0.5.1-7
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1:0.5.1-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1:0.5.1-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1:0.5.1-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
|
||||
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1:0.5.1-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
* Fri May 11 2018 Jaroslav Prokop <jar.prokop@volny.cz> - 1:0.5.1-2
|
||||
- Fix version number to 2 instead of 22, bump epoch as I did earlier in f28 branch.
|
||||
|
||||
* Thu Apr 5 2018 Jaroslav Prokop <jar.prokop@volny.cz> - 0.5.1-22
|
||||
- Enable test suites after needed packages were imported to Fedora.
|
||||
|
||||
* Wed Jan 24 2018 Jaroslav Prokop <jar.prokop@volny.cz> - 0.5.1-1
|
||||
- Initial package
|
||||
|
|
|
|||
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
SHA512 (em-websocket-0.5.1.gem) = ca67da805a67ca7ff840cf58836e6abe5e7a965d50de529cc624b214a1cd8bd4b48ee469ab2266bd80040c94315d59f8fb5903bbf543240fbbe90e80bede0702
|
||||
SHA512 (em-websocket-0.5.3.gem) = 67eddb71428331a09ead59e3bf4b1e145c660a000de57db67b974e0f2d11315b8a4f173961190db868f94d9fd74ed312f5164abf9d3f4950e4c22a0aa542a064
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue