私はRubyとSinatraを初めて使用するので、この問題がクライアント側なのかサーバー側なのかわかりません。アプリに POST を実行しようとすると、コンソール ログに 404 not found エラーが表示されます。「/」、「/admin/」、および「/connect」ページは正常に機能しますが、「/push」のみが見つかりません。
Javascript:
$.post( '/arduino/public/push', notification,'json');
config.ru
# encoding: UTF-8
require './stream'
run Sinatra::Application
stream.rb
require 'json'
require 'sinatra'
set :public_folder, Proc.new{File.join(root,"public")}
set server: 'thin'
get '/' do
erb :index
end
get '/admin' do
erb :admin
end
def timestamp
Time.now.strftime("%H:%M:%S")
end
connections = []
notifications = []
get '/connect', provides: 'text/event-stream' do
stream :keep_open do |out|
connections << out
#out.callback on stream close evt.
out.callback{
#delete the connection
connections.delete(out)
}
end
end
post '/push' do
puts params
#Add the timestamp to the notification
notification = params.merge({'timestamp'=>timestamp}).to_json
notifications.shift if notifications.length > 10
connections.each{ |out| out << "data: #{notification}\n\n"}
end