Ну, я не думаю, что вы можете использовать класс Socket на стороне клиента, так как вольт использует OpalRb для запуска Ruby на клиенте, и, к сожалению, я не думаю, что Opal может поддерживать класс Socket, поскольку это своего рода трудно сделать в браузере. Однако вы можете запустить код на стороне сервера и передать свои желаемые результаты клиенту. Вы можете сделать это, используя Volt's tasks. Вы можете создать их так:
require 'socket'
class SocketTask < Volt::Task
def use_sockets
# do your thing with sockets here...
end
end
, а затем вы можете использовать их в другом месте, например, в контроллере, как это:
class Controller < Volt::ModelController
def some_action
SocketTask.use_sockets
# You can also use the #then method of the returned promise to get the result of the call.
# You can even use the #fail method on the promise to get any thrown errors.
# The following can also run code on the client.
SocketTask.use_sockets.then do |result|
alert result
end.fail do |error|
puts error
end
end
end
Там также хороший скринкаст Рик Карлино о Volt задач here.
Вы пытаетесь запустить это на стороне сервера, правильно? – GDP2
Нет. Я пытаюсь запустить его на стороне клиента. – user3579220