Repository für MDT5/2 Praktikum
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Server.js 909B

123456789101112131415161718192021222324252627282930313233343536
  1. 
  2. const http = require('http');
  3. const ws = require('ws');
  4. const wss = new ws.Server({ noServer: true });
  5. function accept(req, res) {
  6. // all incoming requests must be websockets
  7. if (!req.headers.upgrade || req.headers.upgrade.toLowerCase() != 'websocket') {
  8. res.end();
  9. return;
  10. }
  11. // can be Connection: keep-alive, Upgrade
  12. if (!req.headers.connection.match(/\bupgrade\b/i)) {
  13. res.end();
  14. return;
  15. }
  16. wss.handleUpgrade(req, req.socket, Buffer.alloc(0), onConnect);
  17. }
  18. function onConnect(ws) {
  19. ws.on('message', function (message) {
  20. let name = message.match(/([\p{Alpha}\p{M}\p{Nd}\p{Pc}\p{Join_C}]+)$/gu) || "Guest";
  21. ws.send(`Hello from server, ${name}!`);
  22. setTimeout(() => ws.close(1000, "Bye!"), 50000);
  23. });
  24. }
  25. if (!module.parent) {
  26. http.createServer(accept).listen(8080);
  27. } else {
  28. exports.accept = accept;
  29. }