This is Webservice SDK for mbed. LPCXpresso1769/LPC1768/FRDM-K64F/LPC4088

Dependents:   MbedFileServer_1768MiniDK2 RedWireBridge IssueDebug_gcc MiMicRemoteMCU-for-Mbed ... more

Issue: WebSocketで125byte以上のデータを送信できない

ModWebSocket.writeで126byte以上のデータを送信した場合、ブラウザ側での受信でエラーが起こります。

ソースを眺めていたら、NyLPC_cModWebSocket_writePayloadHeader()で

	if(i_len<126){
		w[1]=(NyLPC_TUInt8)i_len;
		s=2;
	}else{
		w[1]=126;
		s=3;
		*((NyLPC_TUInt16*)(&(w[2])))=NyLPC_htons(i_len);
	}

となっていますが、WebSocketの仕様?では 8bit以上16bit以内で収まるサイズのデータを送信する場合、 ペイロードヘッダのサイズは4byteになるようなので

	}else{
		w[1]=126;
		s=4;
		*((NyLPC_TUInt16*)(&(w[2])))=NyLPC_htons(i_len);
	}

とする必要があると思います。

こちらでは上記のように修正したところ動作が改善しました。

既知の問題でしたらすみません。

1 comment:

10 Jun 2015

有難うございます。

https://tools.ietf.org/html/rfc6455 Page28を確認しました。 ExtendsHeaderのサイズを1バイトにしているミスでした。 リビジョン127で修正しました。