class IRuby::Comm
Comm
is a new messaging system for bidirectional communication. Both kernel and front-end listens for messages.
Attributes
Public Class Methods
Source
# File lib/iruby/comm.rb, line 12 def initialize(target_name, comm_id = SecureRandom.uuid) @target_name, @comm_id = target_name, comm_id end
Public Instance Methods
Source
# File lib/iruby/comm.rb, line 25 def close(metadata = nil, **data) Kernel.instance.session.send(:publish, :comm_close, metadata, comm_id: @comm_id, data: data) Comm.comm.delete(@comm_id) end
Source
# File lib/iruby/comm.rb, line 42 def handle_close(data) @on_close.call(data) if @on_close end
Source
# File lib/iruby/comm.rb, line 38 def handle_msg(data) @on_msg.call(data) if @on_msg end
Source
# File lib/iruby/comm.rb, line 16 def open(metadata = nil, **data) Kernel.instance.session.send(:publish, :comm_open, metadata, comm_id: @comm_id, data: data, target_name: @target_name) Comm.comm[@comm_id] = self end
Source
# File lib/iruby/comm.rb, line 21 def send(metadata = nil, **data) Kernel.instance.session.send(:publish, :comm_msg, metadata, comm_id: @comm_id, data: data) end