วันนี้อยู่ๆก็มีอารมณ์อยากลองทำ performance test ของ websocket ขึ้นมา. ก็เลยทดลองเล่น JMeter 3 with plugin JMeter-WebSocketSampler.
เชิญชมวิธีการทำ performance test บน websocket (ws/wss) กัน.
Contents
Install WebSocket Protocol Support.

- Go to Options > Plugins Manager.
- Go to “Available Plugins” แล้วเลือก WebSocket Protocol Support.
- กด Apply Changes and Restart JMeter.
Add a WebSocket Sampler
พอ JMeter เปิดมาใหม่แล้วจะพบกับ Sampler อันใหม่ที่ชื่อ “WebSocket Sampler”
Fill The Form
กรอกข้อมูลกันเลย! โดยรวมแล้วมันเหมือนกับ HTTP Sampler นี่ล่ะฮะ. มีจุดต่างเล็กน้อย เช่น
- Implementation: ไม่มีให้เลือกนะฮะ มันบังคับใช้ตัวล่าสุด.
- Port Number: ต้องใส่ให้ถูกนะฮะ เพราะว่ามันตั้ง default มาเป็น 80 ซึ่งอาจจะทำให้พัง.
- Connection Id: เท่าที่งมดู มันใช้ในกรณีสร้าง WebSocket Sampler เพิ่มอีกอันเพื่อส่งข้อมูลให้ server. ถ้าไม่ใส่ Connection Id ไว้, plugin นี้มันจะเปิด socket เพิ่ม แทนที่จะส่งไปใน socket เดิม.
- Streaming Connection (checkbox): ถ้าไม่เลือก มันจะปิด socket ทันทีที่ได้ response.
- Response pattern (regex): เอาไว้เช็คว่า response อยู่ใน regular expression ที่กำหนดหรือไม่.
- Close connection pattern (regex): ถ้า response ตรงกับ regular expression ที่กำหนด, มันจะปิด socket.
- Proxy Server: ใช้ไม่ได้นะฮะ.
Issues
ปัญหาสำคัญที่พบก็คือ มันไม่รองรับ cookies และ headers. ซึ่งแปลว่า wss ที่ authen โดยใช้การเช็ค token จาก cookies จะไม่สามารถทำงานได้นะฮะ. แต่ยังดีที่โลกเรามีคนใจบุญไปแก้ไว้ให้แล้ว แต่มันยังไม่ได้เอาไปรวมกับตัว plugin, ดังนั้นเราต้องไป download JAR file เอาเอง แล้วเอาไปวางที่ \lib\ext
. ดูรายละเอียด.
แต่ทว่าตัว plugin มันไม่บอกเราเลยสักนิดว่ามันส่ง header อะไรไปบ้าง ซึ่งบางครั้งเราก็จะงงว่า เอ๊ะ สรุปว่า cookies มันส่งไปมั้ยนะ. วิธีเดียวที่จะดูได้คือต้องไปเอาโค้ดของ plugin ลงมาโม ใส่ log แล้ว build และเอาไปวางใน plugin folder. ใครที่อยากดูก็ download ตัวที่ผมแก้ไว้ให้แล้วไปใช้ได้ โดยเอาไปวางที่ \lib\ext
.