JP6086490B2 - Information processing apparatus, information processing method, and information processing program - Google Patents

Information processing apparatus, information processing method, and information processing program Download PDF

Info

Publication number
JP6086490B2
JP6086490B2 JP2013154215A JP2013154215A JP6086490B2 JP 6086490 B2 JP6086490 B2 JP 6086490B2 JP 2013154215 A JP2013154215 A JP 2013154215A JP 2013154215 A JP2013154215 A JP 2013154215A JP 6086490 B2 JP6086490 B2 JP 6086490B2
Authority
JP
Japan
Prior art keywords
execution
script
information processing
return value
browser
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013154215A
Other languages
Japanese (ja)
Other versions
JP2015026151A (en
Inventor
宮崎 泰彦
泰彦 宮崎
徹郎 徳永
徹郎 徳永
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2013154215A priority Critical patent/JP6086490B2/en
Publication of JP2015026151A publication Critical patent/JP2015026151A/en
Application granted granted Critical
Publication of JP6086490B2 publication Critical patent/JP6086490B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)

Description

本発明は、非同期的な処理を扱う技術に関する。   The present invention relates to a technique for handling asynchronous processing.

Webコンテンツをよりダイナミックにするために、WebコンテンツにJavaScript(登録商標)と呼ばれるスクリプトを記述することが知られている。JavaScriptでは、状態に応じた動作を記述するために、オブジェクトのメソッドを呼び出したり、オブジェクトのプロパティ値を取得するなど、状態を示す値を取得することが可能である。例えば、動画を再生するためのエレメントを参照するオブジェクトをvideoという変数に割り当て、そのエレメントが特定タイプの動画再生が可能かどうかを確認するメソッド(canPlayType)を呼び出したり、現在の再生位置のプロパティ値(currentTime)を取得することができる。図7,8にJavaScriptの例を示す。図7の例では、videoエレメントのcanPlayTypeメソッドの戻り値を変数tyに代入している。エレメントから得られる値は、図8の例のcurrentTimeプロパティのように、変数に代入せずに条件文中に記載したり、加減乗除などの式の一部として使用することも可能である。   In order to make Web content more dynamic, it is known to write a script called JavaScript (registered trademark) in Web content. In JavaScript, in order to describe the operation according to the state, it is possible to obtain a value indicating the state, such as calling an object method or obtaining a property value of the object. For example, an object that refers to an element for playing a movie is assigned to a variable called video, and a method (canPlayType) for checking whether or not the element can play a particular type of movie, or a property value of the current playback position (CurrentTime) can be acquired. 7 and 8 show an example of JavaScript. In the example of FIG. 7, the return value of the canPlayType method of the video element is assigned to the variable ty. A value obtained from an element can be described in a conditional statement without being assigned to a variable, or can be used as a part of an expression such as addition, subtraction, multiplication, and division as in the currentTime property in the example of FIG.

非特許文献1では、Webコンテンツの一部を複数のデバイスのブラウザに表示させることが提案されている。非特許文献1では、Webサーバとデバイスの間に中間ブラウザを配置し、中間ブラウザがデバイス間の通信やJavaScriptを実行することで、複数のデバイスを連携させている。Webコンテンツの一部を複数のデバイスのブラウザに表示させることで、例えば、Webコンテンツ中に動画を表示する部分と動画を操作する部分が含まれる場合、動画の表示をテレビのブラウザで行い、動画の操作をスマートフォンのブラウザで行うことが可能となる。この場合、スマートフォン上の操作が中間ブラウザに送られて、中間ブラウザがテレビにその操作内容に対応する動作を実行させる。   Non-Patent Document 1 proposes that a part of Web content is displayed on browsers of a plurality of devices. In Non-Patent Document 1, an intermediate browser is arranged between a Web server and a device, and the intermediate browser executes communication between devices and JavaScript to link a plurality of devices. By displaying a part of Web content on the browsers of multiple devices, for example, when the Web content includes a part for displaying a moving image and a part for operating the moving image, the moving image is displayed on the TV browser, and the moving image is displayed. Can be performed with the browser of the smartphone. In this case, an operation on the smartphone is sent to the intermediate browser, and the intermediate browser causes the television to execute an operation corresponding to the operation content.

中茂睦裕、他4名、“中間ブラウザによるマルチデバイス連携技術の提案”、第87回GN研究発表会、情報処理学会、2013年3月、第2013-GN-87巻、第6号、p.1-6Yasuhiro Nakamoge and 4 others, “Proposal of multi-device collaboration technology using an intermediate browser”, 87th GN Research Conference, Information Processing Society of Japan, March 2013, 2013-GN-87, No. 6, p.1-6

非特許文献1の技術では、中間ブラウザが異なるデバイス上のブラウザ(以下、「リモートブラウザ」という)に展開されているエレメントの状態を取得するためには、そのデバイスとの通信が不可欠である。具体的には、図7で示したJavaScriptは中間ブラウザで実行されるが、videoエレメントがリモートブラウザに展開されている場合は、canPlayTypeメソッドを起動するのはリモートブラウザとなる。そこで、リモートブラウザ上でcanPlayTypeメソッドを起動するための通信電文REQ1と、そのメソッドの返却値を通知するための通信電文RES1を予め決めておき、中間ブラウザでcanPlayTypeメソッドが実行されるときに、中間ブラウザからリモートブラウザへREQ1を送信し、リモートブラウザから中間ブラウザへ返信されたRES1から返却値を取り出し、canPlayTypeメソッドの返却値とする。同様に、図8の例では、currentTimeプロパティを参照するための通信電文REQ2と、currentTimeプロパティの値を通知するための通信電文RES2を予め決めておき、中間ブラウザでcurrentTimeプロパティが参照されたときに、中間ブラウザからリモートブラウザへREQ2を送信し、リモートブラウザから中間ブラウザへ返信されたRES2から返却値を取り出し、currentTimeプロパティの値とする。   In the technique of Non-Patent Document 1, in order to acquire the state of an element deployed in a browser (hereinafter referred to as “remote browser”) on a device with a different intermediate browser, communication with the device is indispensable. Specifically, the JavaScript shown in FIG. 7 is executed by the intermediate browser. However, when the video element is expanded in the remote browser, it is the remote browser that starts the canPlayType method. Therefore, a communication message REQ1 for starting the canPlayType method on the remote browser and a communication message RES1 for notifying the return value of the method are determined in advance, and when the canPlayType method is executed in the intermediate browser, REQ1 is transmitted from the browser to the remote browser, the return value is extracted from RES1 returned from the remote browser to the intermediate browser, and is set as the return value of the canPlayType method. Similarly, in the example of FIG. 8, when the communication message REQ2 for referring to the currentTime property and the communication message RES2 for notifying the value of the currentTime property are determined in advance, and the currentTime property is referred to by the intermediate browser Then, REQ2 is transmitted from the intermediate browser to the remote browser, the return value is extracted from RES2 returned from the remote browser to the intermediate browser, and is set as the value of the currentTime property.

非特許文献1では、中間ブラウザとリモートブラウザとの間の通信にWebSocketを用いている。WebSocket通信をJavaScriptにより処理するためには、通信電文を受信した際に呼び出されるコールバック関数を事前に定義する必要がある。そのため、リモートブラウザで展開されたエレメントのメソッドの起動、プロパティ値の取得をする場合、返却値を取り出すコールバック関数を記述する必要がある。具体的には、図7の3行目の変数tyはリモートブラウザからRES1を受信したタイミングで代入されるので、図7の4行目の変数tyの値を出力する部分は、リモートブラウザからRES1を受信したタイミングで実行する必要がある。そのため、図7の例は、図9に示すように、リモートブラウザからRES1を受信したときに実行されるコールバック関数を分けて記述する必要がある。なお、図9の3行目のrequest_canPlayTypeは、中間ブラウザ上でcanPlayTypeメソッドを起動する代わりに、リモートブラウザへREQ1を送信し、かつ、REQ1受信時に、第2引数で指定した関数callback1を呼び出すよう指定したメソッドである。さらに、図8の例は、flagの値に応じて8行目のconsole.log(flag)を実行するタイミングが変わる。具体的には、flagの値が1でcurrentTimeプロパティを参照する場合はリモートブラウザからRES2を受信してcurrentTimeプロパティの値を取得したときがconsole.log(flag)を実行するタイミングとなり、flagの値が1以外でcurrentTimeプロパティを参照しない場合はsapmle2を呼び出したときがconsole.log(flag)を実行するタイミングとなる。そのため、図8のJavaScriptを中間ブラウザに対応するように単純に書き換えることさえも困難であるという問題があった。   In Non-Patent Document 1, WebSocket is used for communication between an intermediate browser and a remote browser. In order to process WebSocket communication with JavaScript, it is necessary to define in advance a callback function that is called when a communication message is received. Therefore, it is necessary to write a callback function that retrieves the return value when invoking a method of an element expanded in a remote browser and acquiring a property value. Specifically, since the variable ty in the third line in FIG. 7 is substituted at the timing when RES1 is received from the remote browser, the part that outputs the value of the variable ty in the fourth line in FIG. It is necessary to execute at the timing of receiving. Therefore, in the example of FIG. 7, as shown in FIG. 9, it is necessary to separately describe the callback function that is executed when RES1 is received from the remote browser. Note that request_canPlayType on the third line in FIG. 9 specifies that instead of invoking the canPlayType method on the intermediate browser, REQ1 is sent to the remote browser, and the function callback1 specified by the second argument is called when REQ1 is received. Method. Furthermore, the example of FIG. 8 shows console.console on the eighth line according to the value of flag. The timing for executing log (flag) changes. Specifically, when the flag value is 1 and the currentTime property is referenced, the time when the RES2 is received from the remote browser and the value of the currentTime property is acquired is console. log (flag) is executed. When the value of flag is other than 1 and the currentTime property is not referred to, the time when sapple2 is called is console. It is the timing to execute log (flag). Therefore, there is a problem that it is difficult to simply rewrite JavaScript in FIG. 8 so as to correspond to the intermediate browser.

また、従来のWebコンテンツは1つのブラウザで閲覧されることを前提としており、エレメントのプロパティの値を参照する処理などを非同期的に処理する必要はなかった。非特許文献1の技術を用いてWebコンテンツをリモートブラウザに表示させる場合、JavaScriptが中間ブラウザで実行されることを考慮し、リモートブラウザで非同期的に行われる処理に対応させてJavaScriptを記述しなければならないという問題があった。   In addition, it is assumed that conventional Web content is browsed by a single browser, and there is no need to asynchronously process a process for referring to an element property value. When displaying Web content on a remote browser using the technology of Non-Patent Document 1, considering that JavaScript is executed by an intermediate browser, JavaScript must be described in correspondence with processing that is performed asynchronously by the remote browser. There was a problem that had to be done.

本発明は、上記に鑑みてなされたものであり、非同期的に行われる処理を意識させずにプログラムの記述を可能とすることを目的とする。   The present invention has been made in view of the above, and an object of the present invention is to make it possible to describe a program without being aware of processing performed asynchronously.

第1の本発明に係る情報処理装置は、非同期的に行われる処理を含むスクリプトを実行する情報処理装置であって、前記スクリプトを実行する実行手段と、前記実行手段が実行する処理が他の装置において実行される処理の返却値を用いる場合、IDを生成して当該IDを含む通信電文を前記他の装置へ送信して処理を行わせるとともに、前記IDをキーとして前記スクリプトの実行を再開するのに必要なデータをテーブルに登録した上で前記実行手段に前記スクリプトの実行を中断させる実行中断手段と、前記他の装置から前記IDと前記返却値を含む通信電文を受信したときに、当該通信電文から前記IDと前記返却値を取り出し、前記IDをキーとして前記テーブルから前記スクリプトの実行を再開するのに必要なデータを取得し、前記実行手段に前記返却値を渡して前記スクリプトの実行を再開させる実行再開手段と、を有することを特徴とする。   An information processing apparatus according to a first aspect of the present invention is an information processing apparatus that executes a script including a process that is performed asynchronously. The execution unit that executes the script and the process that the execution unit executes are different from each other. When using the return value of the process executed in the apparatus, an ID is generated, a communication message including the ID is transmitted to the other apparatus to perform the process, and the execution of the script is resumed using the ID as a key. When receiving the communication message including the ID and the return value from the other device, and the execution interruption means for interrupting the execution of the script by the execution means after registering the data necessary to do The ID and the return value are extracted from the communication message, and the data necessary to resume execution of the script is acquired from the table using the ID as a key. Passing said return value to the execution unit and having a an execution resumption means for resuming the execution of the script.

上記情報処理装置において、前記他の装置において実行される処理は、前記スクリプトを実行する実行手段によってアクセスされるエレメントが備えたメソッドが前記他の装置に処理を行わせるものであって、当該メソッド内で前記スクリプトの実行を中断させることを特徴とする。   In the information processing apparatus, the process executed in the other apparatus is such that a method included in an element accessed by an execution unit that executes the script causes the other apparatus to perform the process. The execution of the script is interrupted.

第2の本発明に係る情報処理方法は、非同期的に行われる処理を含むスクリプトを実行する情報処理装置による情報処理方法であって、前記スクリプトを実行するステップと、前記ステップにおいて実行する処理が他の装置において実行される処理の返却値を用いる場合、IDを生成して当該IDを含む通信電文を前記他の装置へ送信して処理を行わせるとともに、前記IDをキーとして前記スクリプトの実行を再開するのに必要なデータをテーブルに登録した上で前記スクリプトの実行を中断させるステップと、前記他の装置から前記IDと前記返却値を含む通信電文を受信したときに、当該通信電文から前記IDと前記返却値を取り出し、前記IDをキーとして前記テーブルから前記スクリプトの実行を再開するのに必要なデータを取得し、前記返却値を渡して前記スクリプトの実行を再開させるステップと、を有することを特徴とする。   An information processing method according to a second aspect of the present invention is an information processing method by an information processing apparatus that executes a script including processing that is performed asynchronously, and includes a step of executing the script and a processing executed in the step When using a return value of processing executed in another device, an ID is generated and a communication message including the ID is transmitted to the other device to perform processing, and the script is executed using the ID as a key. When the communication message including the ID and the return value is received from the other device, the step of interrupting the execution of the script after registering the data necessary for restarting the table in the table, from the communication message The ID and the return value are extracted, and the data necessary to resume execution of the script is acquired from the table using the ID as a key. Characterized by having the steps of: resuming execution of the script by passing the return value.

上記情報処理方法において、前記他の装置において実行される処理は、前記スクリプトを実行するステップにおいてアクセスされるエレメントが備えたメソッドが前記他の装置に処理を行わせるものであって、当該メソッド内で前記スクリプトの実行を中断させることを特徴とする。   In the information processing method, the processing executed in the other device is a method provided in an element accessed in the step of executing the script, causing the other device to perform processing. And the execution of the script is interrupted.

第3の本発明に係る情報処理プログラムは、上記情報処理装置の各手段としてコンピュータを機能させることを特徴とする。
An information processing program according to a third aspect of the present invention causes a computer to function as each unit of the information processing apparatus.

本発明によれば、非同期的に行われる処理を意識させずにプログラムの記述を可能とすることができる。   According to the present invention, it is possible to describe a program without being aware of processing performed asynchronously.

本実施の形態におけるコンテンツ表示装置の構成を示す機能ブロック図である。It is a functional block diagram which shows the structure of the content display apparatus in this Embodiment. DOMデータ記憶部に記憶されるDOMの例を示す図である。It is a figure which shows the example of DOM memorize | stored in a DOM data storage part. JavaScriptの実行を明示的に中断、再開できるように書き換えたdispatchEvent関数の実装例を示す図である。It is a figure which shows the implementation example of the dispatchEvent function rewritten so that execution of JavaScript could be suspended and resumed explicitly. JavaScriptの実行を中断して再開する処理の流れを示すシーケンス図である。FIG. 10 is a sequence diagram showing a flow of processing for interrupting and resuming execution of JavaScript. 非同期的に行われるメソッドの実装例を示す図である。It is a figure which shows the example of mounting of the method performed asynchronously. リモートブラウザからプロパティの値を取得するGetter関数の実装例を示す図である。It is a figure which shows the implementation example of the Getter function which acquires the value of a property from a remote browser. WEBコンテンツに含まれるJavaScriptの例を示す図である。It is a figure which shows the example of JavaScript contained in a web content. WEBコンテンツに含まれるJavaScriptの例を示す図である。It is a figure which shows the example of JavaScript contained in a web content. 図7に示すJavaScriptを非同期的に行われるメソッドに対応させて記述した例を示す図である。FIG. 8 is a diagram illustrating an example in which JavaScript shown in FIG. 7 is described in association with a method that is performed asynchronously.

以下、本発明の実施の形態について図面を用いて説明する。   Hereinafter, embodiments of the present invention will be described with reference to the drawings.

図1は、本実施の形態におけるコンテンツ表示装置の構成を示す機能ブロック図である。本実施の形態におけるコンテンツ表示装置1は、WEBコンテンツを取得し、取得したWEBコンテンツを分割してリモートブラウザ2A,2Bそれぞれに送信し、リモートブラウザ2A,2BそれぞれにWEBコンテンツの一部を表示させる。例えば、動画を表示するWEBコンテンツを受信し、テレビなどのリモートブラウザ2Aに動画を表示させ、スマートフォンなどのリモートブラウザ2Bに操作ボタンを表示させることで、ユーザは、手元のスマートフォンで操作をしながらテレビで動画を見ることが可能となる。なお、図1では、一例として2つのリモートブラウザ2A,2Bを示したが、これに限るものではない。   FIG. 1 is a functional block diagram showing the configuration of the content display device in the present embodiment. The content display apparatus 1 according to the present embodiment acquires WEB content, divides the acquired WEB content, transmits it to the remote browsers 2A and 2B, and displays a part of the WEB content on each of the remote browsers 2A and 2B. . For example, by receiving WEB content for displaying a moving image, displaying the moving image on a remote browser 2A such as a television, and displaying an operation button on the remote browser 2B such as a smartphone, the user can operate with the smartphone at hand. It will be possible to watch videos on TV. In FIG. 1, two remote browsers 2A and 2B are shown as an example, but the present invention is not limited to this.

図1に示すコンテンツ表示装置1は、WEBコンテンツ評価部11、DOMデータ記憶部12、DOMデータ送信部13、実行部14、DOMアクセス部15、ブラウザ通信部16、およびイベント受信部17を備える。コンテンツ表示装置1が備える各部は、演算処理装置、記憶装置等を備えたコンピュータにより構成して、各部の処理がプログラムによって実行されるものとしてもよい。このプログラムはコンテンツ表示装置1が備える記憶装置に記憶されており、磁気ディスク、光ディスク、半導体メモリ等の記録媒体に記録することも、ネットワークを通して提供することも可能である。以下、コンテンツ表示装置1の各部について説明する。   The content display device 1 shown in FIG. 1 includes a WEB content evaluation unit 11, a DOM data storage unit 12, a DOM data transmission unit 13, an execution unit 14, a DOM access unit 15, a browser communication unit 16, and an event reception unit 17. Each unit included in the content display device 1 may be configured by a computer including an arithmetic processing device, a storage device, and the like, and the processing of each unit may be executed by a program. This program is stored in a storage device included in the content display device 1, and can be recorded on a recording medium such as a magnetic disk, an optical disk, or a semiconductor memory, or provided through a network. Hereinafter, each part of the content display device 1 will be described.

WEBコンテンツ評価部11は、Webサーバ(図示せず)などからWEBコンテンツを取得し、WEBコンテンツに含まれる、HTMLデータ、CSS(Cascading Style Sheet)データをDOMデータ記憶部12へ送り、JavaScriptコードを実行部14に送る。   The WEB content evaluation unit 11 acquires the WEB content from a Web server (not shown), etc., sends HTML data and CSS (Cascading Style Sheet) data included in the WEB content to the DOM data storage unit 12, and generates a JavaScript code. The data is sent to the execution unit 14.

DOMデータ記憶部12は、HTMLデータを解析して、ツリー状のデータ構造であるDOM(Document Object Model)に展開して記憶する。HTMLデータの1つのタグがDOMの1つのエレメントを構成し、タグで囲まれた部分が子エレメントとなる。また、DOMデータ記憶部12は、DOMのエレメントを表示する態様を指定するCSSデータも記憶する。   The DOM data storage unit 12 analyzes the HTML data, expands and stores it in a DOM (Document Object Model) that is a tree-like data structure. One tag of HTML data constitutes one element of DOM, and a portion surrounded by the tags is a child element. The DOM data storage unit 12 also stores CSS data that designates a mode for displaying DOM elements.

DOMデータ送信部13は、DOMデータ記憶部12に記憶されたDOMからリモートブラウザ2A,2Bそれぞれに表示させるWEBコンテンツの一部に対応する部分木を判定し、リモートブラウザ2A,2Bそれぞれに対応する部分木を送信する。リモートブラウザ2A,2Bへ送信する部分木を判定する方法としては、例えばHTMLデータ中にdeviceという属性を設けておき、device属性の値に基いて判定する。図2に、DOMデータ記憶部12に記憶されるDOMの例を示す。同図に示すDOMには、device属性に“TV”と“phone”が設定されたエレメントが存在する。device属性に“TV”が設定されたエレメントをルートとする部分木Aをリモートブラウザ2Aに送信し、device属性に“phone”が設定されたエレメントをルートとする部分木Bをリモートブラウザ2Bに送信する。   The DOM data transmission unit 13 determines a partial tree corresponding to a part of the WEB content to be displayed on each of the remote browsers 2A and 2B from the DOM stored in the DOM data storage unit 12, and corresponds to each of the remote browsers 2A and 2B. Send a subtree. As a method for determining a subtree to be transmitted to the remote browsers 2A and 2B, for example, an attribute “device” is provided in HTML data, and the determination is made based on the value of the device attribute. FIG. 2 shows an example of the DOM stored in the DOM data storage unit 12. In the DOM shown in the figure, there is an element in which “TV” and “phone” are set in the device attribute. A subtree A whose root is an element having a device attribute “TV” is transmitted to the remote browser 2A, and a subtree B whose root is an element whose device attribute is “phone” is transmitted to the remote browser 2B. To do.

DOMデータ記憶部12、DOMデータ送信部13を構成する方法としては、サーバサイド上のJavaScript実行環境として知られているnode.jsというプラットフォームを用いることができる。node.jsには、JavaScriptでDOMを操作するJSDOMと呼ばれるソフトウェアライブラリも知られている。   As a method of configuring the DOM data storage unit 12 and the DOM data transmission unit 13, a node.node known as Java Script execution environment on the server side is used. A platform called js can be used. node. A software library called JSDOM that operates DOM with JavaScript is known as js.

実行部14は、Webコンテンツに含まれるJavaScriptコードを実行する。DOMのエレメントでイベントが発生した際には対応するイベントリスナを実行する。イベントリスナは、イベントが発生したときに実行されるJavaScriptで記載されたプログラムである。   The execution unit 14 executes the JavaScript code included in the Web content. When an event occurs in a DOM element, the corresponding event listener is executed. The event listener is a program written in JavaScript that is executed when an event occurs.

DOMアクセス部15は、実行部14がDOMのエレメントにアクセスする際に、アクセス対象のDOM(部分木)を保持するリモートブラウザ2A,2Bに通知してリモートブラウザ2A,2Bに自身が保持するDOMへアクセスさせて返却値を受け取る。なお、エレメントのメソッドを呼び出して返却値がある場合や、エレメントのプロパティを参照する場合など、リモートブラウザ2A,2Bから返却値を受信する場合は、リモートブラウザ2A,2Bに自身が保持するDOMに対するアクセスを実行させる通信電文を送信した後、実行部14にJavaScriptの実行を中断させて、リモートブラウザ2A,2Bから返却値を受け取った後で、JavaScriptの実行を再開させる。JavaScriptの実行を中断して再開する処理の詳細については後述する。   When the execution unit 14 accesses the DOM element, the DOM access unit 15 notifies the remote browsers 2A and 2B that hold the DOM (partial tree) to be accessed, and holds the DOM itself in the remote browsers 2A and 2B. To get the return value. When a return value is received from the remote browsers 2A and 2B, such as when an element method is called and there is a return value, or when an element property is referenced, the remote browser 2A or 2B has its own DOM After transmitting the communication message for executing the access, the execution unit 14 interrupts the execution of JavaScript, receives the return value from the remote browsers 2A and 2B, and then restarts the execution of JavaScript. Details of the processing for interrupting and resuming execution of JavaScript will be described later.

ブラウザ通信部16は、リモートブラウザ2A,2Bとの間で通信を行い、変更するDOMデータ、メソッドの実行を要求する通信電文などを送信し、メソッドの返却値やプロパティの値を含む通信電文などを受信する。ブラウザ通信部16は、例えばWebSocketサーバとして構築しておき、リモートブラウザ2A,2Bとの間でWebSocketコネクションを確立してデータを送受信する。   The browser communication unit 16 communicates with the remote browsers 2A and 2B, transmits DOM data to be changed, a communication message for requesting execution of a method, a communication message including a return value of a method and a property value, and the like. Receive. The browser communication unit 16 is constructed as a WebSocket server, for example, and establishes a WebSocket connection with the remote browsers 2A and 2B to transmit and receive data.

イベント受信部17は、リモートブラウザ2A,2B上で発生した、ボタンクリック等のイベント通知を受信し、DOMデータ記憶部12に記憶したDOMの対応するエレメントで擬似的に同種のイベントを発生させて、DOMデータ記憶部12に記憶したDOMのエレメントに登録されているイベントリスナを実行部14に実行させる。リモートブラウザ2A,2Bが保持するDOMのエレメントに、イベントが発生した時にイベント通知をコンテンツ表示装置1へ送信する処理をイベントリスナとして登録しておくことで、リモートブラウザ2A,2Bで発生したイベントをコンテンツ表示装置1で処理できる。   The event receiving unit 17 receives event notifications such as button clicks generated on the remote browsers 2A and 2B, and generates pseudo-similar events with corresponding elements of the DOM stored in the DOM data storage unit 12. The event listener registered in the DOM element stored in the DOM data storage unit 12 is executed by the execution unit 14. By registering, as an event listener, a process for sending an event notification to the content display device 1 when an event occurs in the DOM element held by the remote browsers 2A and 2B, an event that has occurred in the remote browsers 2A and 2B is registered. It can be processed by the content display device 1.

次に、JavaScriptの実行を中断して再開する処理について説明する。   Next, processing for interrupting and resuming execution of JavaScript will be described.

明示的にプログラムを中断、再開する技術としてFiberと呼ばれる技術がある。Fiberにおいては、実行中のプログラムが、明示的な中断要求をすることで、プログラム実行継続に必要なデータを一時記憶域に保存してから実行を停止する。停止したプログラムは、明示的な再開要求をすることで、一時記憶域からデータを復元して実行を再開する。本実施の形態では、Fiberをnode.js上で実装したnode−fibersと呼ばれるライブラリを用いた。node−fibersでは、中断する可能性のあるプログラムをnode−fibersにおけるFiberオブジェクト内で実行し、プログラムの中でFiber.yield関数を呼び出すことでプログラムの実行が中断される。また、その中断状態を保持しているFiberオブジェクトに対してrunメソッドを呼び出すことで、中断しているプログラムが再開される。   As a technique for explicitly interrupting and resuming a program, there is a technique called Fiber. In Fiber, when a program being executed makes an explicit interruption request, data necessary for continuing program execution is saved in a temporary storage area, and then execution is stopped. The stopped program makes an explicit restart request to restore data from the temporary storage area and resume execution. In this embodiment, Fiber is set to node. A library called node-fibers implemented on js was used. In node-fibers, a program that may be interrupted is executed in a Fiber object in node-fibers, and Fiber. Execution of the program is interrupted by calling the yield function. In addition, the suspended program is resumed by calling the run method for the Fiber object holding the suspended state.

実行部14においてJavaScriptの実行を明示的に中断、再開できるように、イベントリスナを起動するためのdispatchEvent関数を図3のように書き換えて、イベントが発生したときに、イベントリスナがFiberオブジェクト内で実行されるようにする。これにより、イベントリスナはFiberオブジェクト内で実行されて、プログラムの実行を明示的に中断、再開することが可能となる。   In the execution unit 14, the dispatchEvent function for starting the event listener is rewritten as shown in FIG. 3 so that the execution of JavaScript can be explicitly interrupted and resumed. When an event occurs, the event listener is set in the Fiber object. To be executed. As a result, the event listener is executed in the Fiber object, and the execution of the program can be explicitly interrupted and resumed.

図4は、JavaScriptの実行を中断して再開する処理の流れを示すシーケンス図である。以下、実装例を参照しつつ、JavaScriptの実行を中断して再開する処理について説明する。   FIG. 4 is a sequence diagram showing a flow of processing for interrupting and resuming execution of JavaScript. Hereinafter, a process for interrupting and restarting the execution of JavaScript will be described with reference to an implementation example.

実行部14によりリモートブラウザ2A,2Bにおいて非同期的に行われるメソッドが呼び出されると、実行を再開するFiberオブジェクトを識別するために用いるIDを生成し(ステップS11)、生成したIDを埋め込んだ要求電文をリモートブラウザ2A,2Bへ送信し(ステップS12)、IDをキーとしてテーブルにFiberオブジェクトを登録した後(ステップS13)、実行部14にJavaScriptの実行を中断させる(ステップS14)。ここまでの処理により、リモートブラウザ2A,2Bに要求電文が送信され、実行部14で実行されているJavaScriptの処理が中断される。リモートブラウザ2A,2Bにおいて非同期的に行われるメソッドについては、リモートブラウザ2A,2Bに処理を要求した後でプログラムの実行を中断するようにDOMアクセス部15を実装する。非同期的に行われるメソッドの実装例を図5に示す。図5に示す実装例では、2行目でIDを生成し、3行目でIDとともに処理内容をリモートブラウザ2A,2Bに送信し、4行目でIDにFiberオブジェクトを関連つけて記憶している。3行目のREQ1は、リモートブラウザ2A,2Bに処理させる内容を示す値である。リモートブラウザ2A,2Bに処理を要求した後は、5行目でFiber.yeild関数を呼び出して該当メソッドを呼び出したJavaScriptの実行を中断する。この時点で、実行部14はJavaScriptの実行を中止し、イベント発生を待つ処理など他の処理を行う。   When a method executed asynchronously in the remote browsers 2A and 2B is called by the execution unit 14, an ID used to identify a Fiber object that resumes execution is generated (step S11), and a request message in which the generated ID is embedded Is transmitted to the remote browsers 2A and 2B (step S12), and the Fiber object is registered in the table using the ID as a key (step S13), and then the execution unit 14 interrupts the execution of JavaScript (step S14). Through the processing so far, the request message is transmitted to the remote browsers 2A and 2B, and the JavaScript processing executed by the execution unit 14 is interrupted. For methods that are performed asynchronously in the remote browsers 2A and 2B, the DOM access unit 15 is implemented so as to interrupt the execution of the program after requesting the remote browsers 2A and 2B to perform processing. FIG. 5 shows an implementation example of the method performed asynchronously. In the implementation example shown in FIG. 5, an ID is generated in the second line, the processing content is transmitted to the remote browsers 2A and 2B in the third line, and a Fiber object is stored in association with the ID in the fourth line. Yes. REQ1 on the third line is a value indicating the contents to be processed by the remote browsers 2A and 2B. After requesting the processing to the remote browsers 2A and 2B, the Fiber. The execution of JavaScript that called the yield function and called the corresponding method is interrupted. At this point, the execution unit 14 stops the execution of JavaScript and performs other processes such as a process of waiting for an event to occur.

リモートブラウザ2A,2Bは、要求電文を受信すると(ステップS21)、要求電文で指定された処理を実行し(ステップS22)、要求とともに受信したIDと得られた返却値をコンテンツ表示装置1へ送信する(ステップS23)。図5に示す実装例では、REQ1に対応する通信電文RES1にIDと返却値を埋め込んで送信する。   When the remote browsers 2A and 2B receive the request message (step S21), the remote browsers 2A and 2B execute the process specified by the request message (step S22), and transmit the ID received together with the request and the obtained return value to the content display device 1. (Step S23). In the implementation example shown in FIG. 5, the communication message RES1 corresponding to REQ1 is embedded with an ID and a return value.

コンテンツ表示装置1は、リモートブラウザ2A,2BからIDと返却値を受信すると(ステップS31)、IDをキーとしてテーブルからFiberオブジェクトを取得し(ステップS32)、返却値を引数に入れて特定したFiberオブジェクトのrunメソッドを呼び出すことで中断しているJavaScriptの実行を再開させる(ステップS33)。JavaScriptの実行が再開されると、図5の実装例の5行目の変数retに返却値が代入されて、req_canPlayType関数からの返却値として呼び出し元に渡される。図5に示したreq_canPlayType関数をオリジナルのcanPlayTypeに置き換えておけば、WEBコンテンツに含まれるJavaScriptコードでは、リモートブラウザ2A,2Bの処理を待つ記載をする必要がなくなり、canPlayType関数を記載しておくだけで、リモートブラウザ2A,2Bに処理を実行させて返却値を受信する処理が実行される。   When the content display apparatus 1 receives the ID and the return value from the remote browsers 2A and 2B (step S31), the content display apparatus 1 acquires a Fiber object from the table using the ID as a key (step S32), and specifies the Fiber specified by putting the return value in the argument. The execution of JavaScript that has been interrupted is resumed by calling the run method of the object (step S33). When execution of JavaScript is resumed, the return value is substituted into the variable ret on the fifth line in the implementation example of FIG. 5 and passed to the caller as the return value from the req_canPlayType function. If the req_canPlayType function shown in FIG. 5 is replaced with the original canPlayType function, the JavaScript code included in the WEB content does not need to wait for the processing of the remote browsers 2A and 2B, and only the canPlayType function is described. Thus, a process of receiving the return value by causing the remote browsers 2A and 2B to execute the process is executed.

video.currentTimeなどリモートブラウザ2A,2Bが保持するエレメントのプロパティ値へのアクセスについては、JavaScriptのGetter関数を定義する方法を用いる。図6に、プロパティの値を得るGetter関数の例を示す。図6の実装例の処理の内容は、図5の実装例の処理の内容とほぼ同じであり、リモートブラウザ2A,2BへREQ2を送信してプロパティの値を問い合わせた後、リモートブラウザ2A,2BからRES2を受信してプロパティの値が得られるまでJavaScriptの実行を中断する。   video. For accessing property values of elements held by the remote browsers 2A and 2B such as currentTime, a method of defining a JavaScript Getter function is used. FIG. 6 shows an example of a Getter function for obtaining a property value. The processing content of the implementation example of FIG. 6 is almost the same as the processing content of the implementation example of FIG. 5. After sending REQ2 to the remote browsers 2A and 2B and inquiring the property value, the remote browsers 2A and 2B The execution of JavaScript is suspended until the value of the property is obtained by receiving RES2.

なお、DOM APIとして規定されている値を返却するメソッドやプロパティ値の参照すべてに対して上述のプログラムの実行を中断・再開する処理が必要というわけではない。例えば、エレメントには、そのIDを参照するための“id”というプロパティがあるが、このidプロパティの値は、DOMデータ記憶部12とリモートブラウザ2A,2Bによって差異が生じるものではないため、DOMデータ記憶部12上で参照すればよい。DOMデータ記憶部12上を参照するときは遅延が生じないので、値が得られるまでJavaScriptの実行を中断する処理を行わなくてもよい。したがって、DOMアクセス部15では、各DOM APIに対して、リモートブラウザ2A,2B上でのメソッドの起動、プロパティ値の参照が必要となるものに対してのみ、上述のreq_XXXXX、get_XXXXXを実装すればよい。   Note that it is not necessary to suspend / restart the above-described program execution for all methods or property value references that return values defined as DOM APIs. For example, the element has a property “id” for referring to the ID, but the value of this id property does not cause a difference between the DOM data storage unit 12 and the remote browsers 2A and 2B. Reference may be made on the data storage unit 12. Since no delay occurs when referring to the DOM data storage unit 12, it is not necessary to perform processing for interrupting the execution of JavaScript until a value is obtained. Therefore, in the DOM access unit 15, if the above req_XXXX and get_XXXX are implemented only for those that require the method activation and property value reference on the remote browsers 2A and 2B for each DOM API. Good.

以上説明したように、本実施の形態によれば、リモートブラウザ2A,2Bから送信される返却値を待つ必要がある場合に、実行部14によるJavaScriptの実行を中断させて、リモートブラウザ2A,2Bから返却値が得られたときに実行を再開させることで、コンテンツ表示装置1とリモートブラウザ2A,2B間の非同期処理について意識することなくWEBコンテンツのJavaScriptコードを記述することができる。このことにより、WEBコンテンツの一部をリモートブラウザに送信する場合でも、WEBコンテンツを1つのブラウザで表示させるときと同様の同期処理の態様でWEBコンテンツに含まれるJavaScriptコードを記述することができる。   As described above, according to the present embodiment, when it is necessary to wait for a return value transmitted from the remote browsers 2A and 2B, the execution of the JavaScript by the execution unit 14 is interrupted and the remote browsers 2A and 2B are interrupted. By restarting the execution when the return value is obtained from, the JavaScript code of the WEB content can be described without being aware of the asynchronous processing between the content display device 1 and the remote browsers 2A and 2B. As a result, even when a part of the WEB content is transmitted to the remote browser, the JavaScript code included in the WEB content can be described in the same manner of synchronization processing as when the WEB content is displayed by one browser.

1…コンテンツ表示装置
11…WEBコンテンツ評価部
12…DOMデータ記憶部
13…DOMデータ送信部
14…実行部
15…DOMアクセス部
16…ブラウザ通信部
17…イベント受信部
2A,2B…リモートブラウザ
DESCRIPTION OF SYMBOLS 1 ... Content display apparatus 11 ... WEB content evaluation part 12 ... DOM data storage part 13 ... DOM data transmission part 14 ... Execution part 15 ... DOM access part 16 ... Browser communication part 17 ... Event reception part 2A, 2B ... Remote browser

Claims (5)

非同期的に行われる処理を含むスクリプトを実行する情報処理装置であって、
前記スクリプトを実行する実行手段と、
前記実行手段が実行する処理が他の装置において実行される処理の返却値を用いる場合、IDを生成して当該IDを含む通信電文を前記他の装置へ送信して処理を行わせるとともに、前記IDをキーとして前記スクリプトの実行を再開するのに必要なデータをテーブルに登録した上で前記実行手段に前記スクリプトの実行を中断させる実行中断手段と、
前記他の装置から前記IDと前記返却値を含む通信電文を受信したときに、当該通信電文から前記IDと前記返却値を取り出し、前記IDをキーとして前記テーブルから前記スクリプトの実行を再開するのに必要なデータを取得し、前記実行手段に前記返却値を渡して前記スクリプトの実行を再開させる実行再開手段と、
を有することを特徴とする情報処理装置。
An information processing apparatus that executes a script including processing performed asynchronously,
Execution means for executing the script;
When the process executed by the execution unit uses a return value of a process executed in another device, an ID is generated and a communication message including the ID is transmitted to the other device to perform the process. Execution interrupting means for causing the execution means to interrupt the execution of the script after registering data necessary for resuming the execution of the script with the ID as a key;
When the communication message including the ID and the return value is received from the other device, the ID and the return value are extracted from the communication message, and the execution of the script is resumed from the table using the ID as a key. Execution resumption means for obtaining data necessary for the execution, passing the return value to the execution means, and resuming execution of the script;
An information processing apparatus comprising:
前記他の装置において実行される処理は、前記スクリプトを実行する実行手段によってアクセスされるエレメントが備えたメソッドが前記他の装置に処理を行わせるものであって、当該メソッド内で前記スクリプトの実行を中断させることを特徴とする請求項1記載の情報処理装置。   The process executed in the other apparatus is a method in which a method included in an element accessed by an execution unit that executes the script causes the other apparatus to perform the process, and the execution of the script is performed in the method. The information processing apparatus according to claim 1, wherein the information processing apparatus is interrupted. 非同期的に行われる処理を含むスクリプトを実行する情報処理装置による情報処理方法であって、
前記スクリプトを実行するステップと、
前記ステップにおいて実行する処理が他の装置において実行される処理の返却値を用いる場合、IDを生成して当該IDを含む通信電文を前記他の装置へ送信して処理を行わせるとともに、前記IDをキーとして前記スクリプトの実行を再開するのに必要なデータをテーブルに登録した上で前記スクリプトの実行を中断させるステップと、
前記他の装置から前記IDと前記返却値を含む通信電文を受信したときに、当該通信電文から前記IDと前記返却値を取り出し、前記IDをキーとして前記テーブルから前記スクリプトの実行を再開するのに必要なデータを取得し、前記返却値を渡して前記スクリプトの実行を再開させるステップと、
を有することを特徴とする情報処理方法。
An information processing method by an information processing apparatus that executes a script including processing performed asynchronously,
Executing the script;
When the process executed in the step uses a return value of the process executed in another device, an ID is generated and a communication message including the ID is transmitted to the other device to perform the process. Suspending the execution of the script after registering the data necessary for resuming the execution of the script in the table using as a key;
When the communication message including the ID and the return value is received from the other device, the ID and the return value are extracted from the communication message, and the execution of the script is resumed from the table using the ID as a key. Obtaining necessary data, passing the return value and resuming execution of the script;
An information processing method characterized by comprising:
前記他の装置において実行される処理は、前記スクリプトを実行するステップにおいてアクセスされるエレメントが備えたメソッドが前記他の装置に処理を行わせるものであって、当該メソッド内で前記スクリプトの実行を中断させることを特徴とする請求項3記載の情報処理方法。   The processing executed in the other device is a method in which the method provided in the element accessed in the step of executing the script causes the other device to perform processing, and the execution of the script is executed in the method. 4. The information processing method according to claim 3, wherein the information processing is interrupted. 請求項1又は2に記載の情報処理装置の各手段としてコンピュータを機能させることを特徴とする情報処理プログラム。
An information processing program for causing a computer to function as each unit of the information processing apparatus according to claim 1.
JP2013154215A 2013-07-25 2013-07-25 Information processing apparatus, information processing method, and information processing program Active JP6086490B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013154215A JP6086490B2 (en) 2013-07-25 2013-07-25 Information processing apparatus, information processing method, and information processing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013154215A JP6086490B2 (en) 2013-07-25 2013-07-25 Information processing apparatus, information processing method, and information processing program

Publications (2)

Publication Number Publication Date
JP2015026151A JP2015026151A (en) 2015-02-05
JP6086490B2 true JP6086490B2 (en) 2017-03-01

Family

ID=52490787

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013154215A Active JP6086490B2 (en) 2013-07-25 2013-07-25 Information processing apparatus, information processing method, and information processing program

Country Status (1)

Country Link
JP (1) JP6086490B2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109669817A (en) * 2018-12-19 2019-04-23 深圳市活力天汇科技股份有限公司 A kind of Node.js Server Restart method based on PM2

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7664862B2 (en) * 2008-01-14 2010-02-16 International Business Machines Corporation Browser-based proxy server for customization and distribution of existing applications
US8554938B2 (en) * 2010-08-31 2013-10-08 Millind Mittal Web browser proxy-client video system and method

Also Published As

Publication number Publication date
JP2015026151A (en) 2015-02-05

Similar Documents

Publication Publication Date Title
WO2018068657A1 (en) Interface moving method, device, intelligent terminal, server and operating system
US9961129B2 (en) Business transaction correlation with client request monitoring data
US20130091197A1 (en) Mobile device as a local server
KR102045602B1 (en) Live tiles without application-code execution
US20110055314A1 (en) Page rendering for dynamic web pages
US20070220083A1 (en) Estimation of initial dynamic rendering control data
US7984170B1 (en) Cross-domain communication in domain-restricted communication environments
US10824770B2 (en) Web application execution with secure elements
WO2017206396A1 (en) Video playing method and device
US20150067146A1 (en) Custom correlation of a distributed business transaction
JP6418004B2 (en) Event notification program, event notification method, and event notification device
WO2020216204A1 (en) Information acquisition method and apparatus
US20140143670A1 (en) Video Playback Analytics Collection
US20240031120A1 (en) System and method for automatically synchronizing responses to conditions on devices
CN105743955A (en) Method for JavaScript object expansion
WO2021018186A1 (en) Video update push method and terminal
CN106599045B (en) Request sending method and device
US20120233560A1 (en) Method for managing widgets in an electronic device to improve the user experience of the device
CN110619101B (en) Method and apparatus for processing information
CN109981546B (en) Method and device for acquiring remote call relation between application modules
CN110286954B (en) Application program starting method and device and storage medium
EP3872630B1 (en) Request processing method and apparatus, electronic device, and computer storage medium
CN111382039A (en) Method, device, electronic equipment and storage medium for reporting user behavior event
JP6086490B2 (en) Information processing apparatus, information processing method, and information processing program
CN111191225A (en) Method, device, medium and electronic equipment for switching isolated objects

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150928

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160621

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20161018

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161205

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20161213

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170126

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170126

R150 Certificate of patent or registration of utility model

Ref document number: 6086490

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150