質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

819閲覧

websocket closeの処理

mobuocity

総合スコア18

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/09/13 06:13

質問です
weboscketでデータを送信した後に、接続を切断したいのですが、下記のような書き方だと
接続はしてもすぐ切断され、データを送ることがありません。いろいろ調べても使い方がわかりません。
どなたかご教授ください

spchk.js

spchk.js

1 2 3//受取用データ 4var result = ""; 5 6// 送られてデータを受け取る 7this.self.addEventListener("message" , function (e){ 8 result = e.data 9 // 結果を送信 10 this.self.postMessage(result); 11}); 12 13// エラーを受け取る 14this.self.addEventListener("error" , function (e){ 15 error = e.data 16 // エラーを送信 17 this.self.postMessage(error); 18}); 19 20// worker.jsをinclud 21self.importScripts('worker1.js'); 22 23 24

worker.js

worker1.js

1// 2// 3// // websocket接続 4var wsUri = "ws://xxx/"; 5websocket1 = new WebSocket(wsUri); 6 7// websocket接続 8websocket1.onopen = function () { 9 console.log("接続しました"); 10 //データを送信 11 websocket1.send("hoge"); 12}; 13 14// エラー 15websocket1.onerror = function (error) { 16 console.log('WebSocket Error ' + error); 17}; 18 19//データ受け取り 20websocket1.onmessage = function (e) { 21 self.postMessage(e.data); 22 23}; 24 25websocket1.onerror = function(ev){ 26 self.postMessage("error"); 27}; 28 29 30websocket1.onclose = function(){ 31 webSocket1 = null; 32 console.log("close"); 33} 34 35websocket1.close(); 36

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

websocket.onXXX = のところはwebsocket が節雑したとか、メッセージが送られた時になにをするか設定しているだけです。

この設定が終わった直後にclose してしまってるのでwebsocket が閉じてしまって通信できなくなります。

何かした後にとじたければonXXX = fuction(){}

と書いてあるfunction の中に書く必要があります。

送信直後にとじるなら、onmessage と onerrorのところに入れましょう

投稿2017/09/13 07:36

kero1209

総合スコア431

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mobuocity

2017/09/13 07:43

xxxというのは closeでしょうか? 例えば送信直後であれば hoge.onmessage = function (e) { self.postMessage("test"); websocket1.onclose = function(){ console.log("close"); } } といった感じでしょうか?
kero1209

2017/09/13 07:55

postMessageを実行した後にクローズしたいのですよね。 xxxというのはpostMessageを行なってるところなのでmessage とerr になります。 message の方だと websocker1.onmessage = function (e) { self.postMessage("test"); websocket1.close(); }
mobuocity

2017/09/13 08:00

あああなるほど、すごく単純なことだったのですね・・・ ありがとうございます!もっと勉強します! ベストアンサーにさせてもらいます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問