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

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

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

WebSocketとは双方向・全二重コミュニケーションのためのAPIでありプロトコルのことを指します。WebSocketはHTML5に密接に結びついており、多くのウェブブラウザの最新版に導入されています。

JavaScript

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

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

AWK

AWKは、UNIX 上で開発されたプログラミング言語で、CSVファイルなどのテキストファイルの処理を目的にデザインされています。

Q&A

0回答

219閲覧

Serverless FrameworkとWebsocketをローカルで実行時のエラー (参考にしている記事とGitHubに全ソースあり)

MoriNezumi

総合スコア0

WebSocket

WebSocketとは双方向・全二重コミュニケーションのためのAPIでありプロトコルのことを指します。WebSocketはHTML5に密接に結びついており、多くのウェブブラウザの最新版に導入されています。

JavaScript

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

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

AWK

AWKは、UNIX 上で開発されたプログラミング言語で、CSVファイルなどのテキストファイルの処理を目的にデザインされています。

0グッド

2クリップ

投稿2023/12/05 16:15

実現したいこと

Serverless Framework+Websocketで動作するシステムを作成したい

前提

下記記事を元に作成しております
https://qiita.com/uta-member/items/fb2b7def0b3087b21060
上記のソースGitHub
https://github.com/Uta-member/aws-serverless-websocket-ts

wscatを使用して接続することは出来ているのですが、sendmessageのの実行にエラーが発生している状態です
エラー内容からモジュール内でbodyの代入分割処理で失敗しているのは理解しているのですが、解決方法が検討付かない状態です

wscat側の表示

Connected (press CTRL+C to quit) > {"action":"sendmessage","data":"hello!"} < {"connectionId":"79375a67-51a3-41c7-97f1-d4329444acac","message":"Internal server error","requestId":"1234567890"}

発生しているエラーメッセージ

(λ: sendMessage) RequestId: 2342a425-5aca-4909-827b-ee958fd9611c Duration: 2161.26 ms Billed Duration: 2162 ms × TypeError: Cannot destructure property 'body' of '(intermediate value)' as it is undefined. at WebSocketClients.#processEvent (file:///C:/Users/aws-serverless-websocket-ts-main/node_modules/serverless-offline/src/events/websocket/WebSocketClients.js:289:15)

該当のソースコード

TypeScript

1const sendMessage: APIGatewayProxyWebsocketHandlerV2 = async ( 2 event, 3 _context, 4 _callback 5) => { 6 try { 7 const apiManage = new ApiGatewayManagementApi({ 8 apiVersion: "2018-11-29", 9 endpoint: getEndpoint(event.requestContext), 10 }); 11 12 const data = encodeObjectToUint8Array({ 13 message: "message success!!", 14 body: event.body, 15 }); 16 17 // 送る処理 18 await apiManage.postToConnection({ 19 ConnectionId: event.requestContext.connectionId, 20 Data: data, 21 }); 22 23 return { 24 statusCode: 200, 25 body: "sendMessage", 26 }; 27 } catch (err) { 28 console.log(err); 29 } 30}; 31 32export const main = sendMessage;

エラー発生原因のWebSocketClients.js(2行目がエラー発生個所) 

TypeScript

1try { 2 const { body } = await lambdaFunction.runHandler() 3 if ( 4 body && 5 routeKey !== '$disconnect' && 6 route.definition.routeResponseSelectionExpression === '$default' 7 ) { 8 // https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-route-response-selection-expressions 9 // TODO: Once API gateway supports RouteResponses, this will need to change to support that functionality 10 // For now, send body back to the client 11 this.send(connectionId, body) 12 } 13 } catch (err) { 14 log.error(err) 15 16 sendError(err) 17 }

試したこと

・serverless-offlineのバージョンのダウングレード、アップグレード
・モジュールの再インストール

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.53%

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

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

質問する

関連した質問