ws.html 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <!DOCTYPE html>
  2. <html xmlns:v-on="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
  6. <title>ThinkCMF WebSocket Demo</title>
  7. <script src="__TMPL__/demo/public/assets/js/vue.js"></script>
  8. <script src="__TMPL__/demo/public/assets/js/websocketClient.js"></script>
  9. </head>
  10. <body>
  11. <div id="app">
  12. <ol>
  13. <li v-for="message in messages">
  14. {{message }}
  15. </li>
  16. </ol>
  17. <input v-model="message">
  18. <button v-on:click="sentMessage">发送</button>
  19. </div>
  20. <php>
  21. $_request=request();
  22. </php>
  23. <script>
  24. var client = null;
  25. var app = new Vue({
  26. el: '#app',
  27. data: {
  28. message: 'Hello ThinkCMF!',
  29. messages: []
  30. },
  31. methods: {
  32. sentMessage: function () {
  33. client.emit('demo/ws/index', {
  34. "event": 'demo/ws/index',
  35. "url": 'demo/ws/index',
  36. "arguments": { //客户端投递数据
  37. "post": {'message': this.message},//post数据
  38. "get": {'test_get': 'test'},//get数据
  39. "cookie": [],//cookie数据
  40. }
  41. });
  42. this.message = '';
  43. }
  44. }
  45. });
  46. client = WsClient({host: "{$_request->host(true)}", port: 9501, endpoint: ''});
  47. client.connect();
  48. client.on('demo/ws/index', function (data) {
  49. console.log(data);
  50. app.messages.push(data.message);
  51. });
  52. // client.emit('portal/ws/index', "data");
  53. </script>
  54. </body>
  55. </html>