通用权限管理系统提供的消息接口可实现消息获取,消息发送,底层使用Redis对消息进行缓存,解决消息的并发请求对数据库的压力。
前端可以通过客户端轮询来获取最新消息,前端效果截图如下:
aaarticlea/jpeg;base64,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" alt="" />
1、发送消息
aaarticlea/jpeg;base64,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pfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdapfdao8zFnFynjuX/AIxt0USKyLjTzMmlwu6DTObFlQG1ingc5QwW1AAoOAzu83gX671sJDFGPEhjF6MyORbQmIxCjayicFfrnMJLxIKUQYdLrYwPO28fgfmp43nCW2FztceCLW5PKYWwY6FC4+FsMVYg0FRsSAC0xiAcU4OFfw40pJlnJEJ8kyQ+D8ohULMArwMFDDK4FLwXHTkglYUcYM4K7SB2Z1bQtY8RJXCki8SxWqxFaQaGCAuqqZXwOITnYus6bD2j7yYvUtMYYVdpd/P+f+LZ4kxegfFKfohWBRJpoipWZWrgkE2AxeEDaLUIVotWlixITbA2gKFCoogM22OOBChhYDZuVHxiywxKzCsGK7FHG8suIdLrQxPOy8PhPm543nGOE5asbpCgBS81q3hRL/AjOQOHIU45katPCawC54C6oZwT243Ra6Lq1W3DI5fwDYFwSl4ClnDEfukekS6OgKI1ixRUaIWtHS62MBiUcaXkEMuKyKMEJouktgIUYQgVBbLFoeBzFpkKfaPvIx5TFNVzQ/z0/G8/c33kfDTS9PxvP3MuE5oS5AI2JXp+N5+5vvICcZNeRKjMPy5en43n7m+8lSCTJZTQyrDC7q0KMPT8bz9zfeS+On4vj0/G8/c1s4zcJQ/bINYNVys/v0/G8/c33kzlWzajp+bX8en43n7mBEvBjhCKiQBVC1f0f0en43n7m+8jGYzQA5g4HBX+en43n7m+8hXkNOlfoxvh6fjefub7yPhppen43n7mXCc0rdspDLmen43n7mdaCxk/Sw5BMS42Uwi4Lj8fHp+N5+5uAQmUVumoY8AiLcyu3+gPr0/G8/c1+wfLoKsRrAwh466Xp+N5+5hxnNKdljDgHJxzOvD0/G8/c33kSEWOOFAGFchxvng5npeN5+5vvIM4E/LKUKyLDD49PxvP3N95CFYdr0/G8/cwHCM0qFQKAoDFF4vB8Gdel43n7m+8g2IEUA1gubkfmsca9PxvP3N95Hef+L49PxvP3Mqzs3CeO5en43n7m+8jTNBsEr9i7w9PxvP3M0jGiMGJwF55Bg43Qy8K4pLLkrWeVv59PxvP3NiMDfLXNCoBYW3d4ZS+OHa9PxvP3NbKM3GeO5en43n7mBERRj8Q96iJgKF2YK58fxXpeN5+5jiLFLGHTGs7pmVzg087j07EKLv4w4en43n7mK2TIEaDCzkQ8ddL0/G8/cw4zmnjuXp+N5+5vvJRKCmxLVL+RneZScdizYs2LNizYs2LNizYs2LNizIDBWvONizYs2LNizYs2LNizYs2LNizYs2LNizYs2LNizYs2LNizYs2LNizYs2LNizYs2LNizYs2LNizYs2LNizYs2LNizYs2LNizYs2LNizYs2LNizYs2LNizYsQsEUicYg8IObrOj/oCvxXSWTT+Gef8AWXGDoSYFuKAwGDkI0AisZN+V3JQ45cPjnMczVXr5Wzz/AKw8MnfVsVL+CUsFayqFtfgnn/WF7a7BHOruvnIw5wqFBbA5Lf5MawxyjNrkhFuqQp/UfPe8UjSZwQLBvFT+r/6PvIQrDtf9VCMEMAtWDICAhJFvqWytYGeOVkpLTvoZkcW6tx4Fx1MxKgGBc+Rf6r/zOvi91ZGNcdaDFb8GVMoHnzxXnzwyZQiUmjCqEwMmNrWGeOvxf/SBwjNLE6XngyWhNizYs2LNizYs2LNizYs2LNizYs2LNizYs2LNizYs2LNizYs2LNizYsIS6wV0XNeR/BIweiALiU/0goMbENGF1bqtxW2zDnjGpV2iN8GHi/wSQUipx2ZkvMgjkMTCJxTmfwSJqqKS+dGWYzQsYLVYhytRviRZYnKyUSabVvWFASLm4MbFmxZsWbFmxZsWbFmxZsWbFmxZsWbFmxZsWbFmxZsWbFmxZsWbFmxYhYIpE4ygQAU4NmyYGBjec8I6zwjrPCOs8I6zwjrPCOs8I6zwjrPCOs8I6zwjrPCOs8I6zwjrPCOs8I6zwjrPCOs8I6zwjrPCOs8I6zwjrPCOs8I6zwjrPCOs8I6zwjrPCOs8I6xgMPAa3JxzxJ4R1nhHWeEdZ4R1nhHWeEdZ4R1nhHWeEdZ4R1nhHWeEdZ4R1nhHWeEdZ4R1nhHWeEdZ4R1nhHWeEdZ4R1nhHWeEdZ4R1nhHWeEdZ4R1nhHWKaOBbHBx/wDgP//Z" alt="" />
2、收到消息
aaarticlea/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wgARCAF9AfYDASIAAhEBAxEB/8QAGgABAAIDAQAAAAAAAAAAAAAAAAMFAQIEBv/EABkBAQEBAQEBAAAAAAAAAAAAAAABAgQFA//aAAwDAQACEAMQAAABr7BH63BLEajXZZs1ShWWEBWNsE30JZuWQS9HEl7XEjtcQ7XEO1xDtcQ7XEO1xDtcQ7XEO1xDtcQ7XEO1xDtcQ7XEO1xDtcQ7XEO1xDtlrWbdDy+6v5erl9jz7C387Ji3+KRjfoM+dS8g7OcAAAAAAAAAAAAAAAAAAAAAAAAAC6Hhen09Ku3mxVHQneghO1D2ELVWyOOOhy8xZo7aq1ZIrVkK1ZCtWQrVkK1ZCtWQrVkK1ZCtWQrVkK1ZCtWQrVkK1ZCtWQrVkK1ZCtWQrVkK1ZCtWQrdbTU80jZ1c8PdZS+ekvR57a/FdDbinktBQyXWDz+PRCtshAUAAAAAAAAAAAAAAAAAAAABrtoeZBc2tXaAFTX3kEUFl2z1R9FhKT6b6EMdR2Hb0eSuC1ZhJY4K8uVVqWqmpz2qDqNEoiSiJKIkoiSiJKIkoiSiJKIkoiSiJKIkoiSiJKIkoiSjRnB5Nxo9PaVdpQAAACKWIgdgqersHP0A4e4V8doKubuHL0bAAAAAAAAAAAAAAAAADXGcHgloW6sq2yQAAABFLESgAAAAAAAAAAAAAAAAAAAAAAA1xnB5Blc31nW2U0AAAAiliJQAAAAAAAAAAAAAAAAAAAAAAAa4zg8u2FvZVtkAAAAIpYiUAAAAAAAAAAAAAAAAAAAAAAAGuM4PMgt7KtsgAAABFLESgAAAAAAAAAAAAAAAAAAAAAAA1xnB5kFvZVtkAAAAIpYiUAAAAAAAAAAAAAAAAAAAAAAAGuM4PMgt7KtsgAAABFLESgAAAAAAAAAAAAAAAAAAAAAAA1xnB5kFvZVtkAAAAIpYiUAAAAAAAAAAAAAAAAAAAAAAAGuM4PMgt7KtsgAAABFLESgAAAAAAAAAAAAAAAAAAAAAAA1xnB5kFvZVtkAAAAIpYiUAAAAAAAAAAAAAAAAAAAAAAAGuM4PMgt7KtsgAAABFLESgAAAAAAAAAAAAAAAAAAAAAAA1xnB5kFvZVtkAAAAIpYiUAAAAAAAAAAAAAAAAAAAAAAAGuM4PMgt7KtsgAAABFLESgAAAAAAAAAAAAAAAAAAAAAAA1xnB5kFvZVtkAAAAIpYiUAAAAAAAAAAAAAAAAAAAAAAAGuM4PMgt7KtsgAAABFLESgAAAAAAAAAAAAAAAAAAAAAAEBLjODzILeyrbIAAAARyaGzIwyMMjDIwyMMjDIwyMMjDIwyMMjDIwyMMjDIwyMMjDIwyMMjDIwyMMjGu+h5kFrY8FkaNxo3GjcaNxprKNG40bjRuNG40bjRVeV6vh794vn3n3jw2T3DxUcvuXiPRY1avA9n0x7J4ge3eJS+2eHzZ7du4unRuNG40bjRuNG40bjRuNG40bjTSbQ8yC3squxN2g3aDdoN2g3aDdoN2g3aDdoN2gqfOeqpO/ktuCBW0kLU7eTVLw+i4bXN8jf8AG+uJt+ZjXfFyo3ru6befTtHmdu7QbtBu0G7QbtBu0G7QbtBu0G+jU82Cz7KAX6gF+oBfqAX6gF+oBfqAX6gF+oBfqAX6gF+oBfqAX6gF+oBfqAX6gF+oBfqAX6gF+oBfqAX6gF+oBfqAX6gF+oBfqAX6gF+oBfqAAf/EACsQAAEDBAMAAQQBBAMAAAAAAAABAgMEERIUEzJQFQUhIjRAECMwQTFCYP/aAAgBAQABBQJEuZLbO478mpZG2sn2FW6ifY/05chVeq/6d9y4ioh/15FHNydE/ibsGwbBsGwbBsGwbBsGwbBsGwbBsGwbBsGwbBsGwbBsGwbBsGwbBsGwbBsGwbBsGwbBsDZkco+NI3e9P3KS6umavEuKEata3JGunX+168/cZI6MSokQ2pb7UwtTKqrUyqnrw00cqaMBowGjAaMBowGjAaMBowGjAaMBowGjAaMBowGjAaMBowGjAaMBowGjAaMBowGjAaMBowGjAaMBowGjAaMBowGjAaMBowGjAaMBowGjAaMBowGjAaMBowGjAaMBowGjAaMBowGjAaMBowGjAaMBowGjAaMBowGjALQwIllKO+G1VE1dPGtNXSSEdc50q103JtTKzZjRzq5iKyrc5229adtfmLWuatRXyNShqXVKec7r+ZSdU+nvUdRTuG0cuLPpUUb/AI9VdHTK2HRbsMo3MRlK5irQyrElNK1sn05ZBaKfhpYJIvPd1KS+NnFnFnFnFnFnFnFnFnFnH5FnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnFnDssSi6/1qnuYc03HFJ/efPLyT1T0Sjmzm+9xViR0ctNM5XRNbxocaHGhxoPwjYjWOajWOazCRPwWTjQ40ONDjQ40ONDjQ40ONDjQ40ONDjQ40ONDjQ40ONDjQ40ONDjQ40ONDjQ40ONDjQ40ONDjQ40ONDjQ40ONBv2H9PuUXX+slOyVW0UbJG0aIrYGsZqs444WxOtZTFW/UKdZ31dIxXpSMjbVMeyRkizo7OsKiR0c9OsmccXMkMLUok4X1XKyKBFRzfCQf05XZUXX/Hwf3oInxlPRrA5InpJDCynh/pLTrLLDTvhNeZjIqV7IdVmawI6JERrfCQf0fA5zqLr7aD+llKPr7aD+jJc3UfX20H9OJL0fX20H9PuUfX20H9Cj6+2g/oUfX20H9Cj6+2g/oUfX20H9Cj6+2g/oUfX20H9Cj6+2g/oUfX20H9Cj6+2g/oUfX20H9Cj6+2g/oUfX20H9Cj6+2g/oUfX20H9Cj6+2g/oUfX20H9Cj6+2g/oUfX20H9Cj6+2g/oUfX20H9Cj6+2g/oUfX20H9Cj6+2g/oUfX2ldcQf0KPr/iT0n9Cj6/4k/wCfRf0KRbNyQyQyQyQyQyQyQyQyQyQRfvkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkg534FH1/i/Uv1kS660l8Fx4l5ONprvHQua2n/AGfqX6yJdVpXW4VvwuROB5w/isX4U/7P8V/Qo+v8X6l+tDbmWRGkzUlcmMk+X4NujqnJYYP2PqX6ze7nMlRiKsneLBUPzaSrlBB+x/Ff0KT7NyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQq41qIvj5T4+U+PlPj5T4+U+PlPj5SKhkZLVxrURfHynx8p8fKfHynx8p8fKfHykVDIyXJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJBy3aU8rGR7ERsRGxEbERsRGxEbERsRGxEbERsRGxEbERsRGxEbERsRGxEbERsRGxEbERsRGxEbERsRGxEbERsRGxEbERsRGxEbERsRGxEbERsRGxEbERsRGxEbERsRGxEbERsRGxEbERsRGxEbERsRGxEbERsRGxEbERsRGxEbEX/gf/xAAlEQACAwEAAgAFBQAAAAAAAAAAAhITUQEDESJAQVBhEDEyYID/2gAIAQMBAT8BZur30WMTYsYsYsYsYmxYx3yN0tfhc+lz6XPpc+lz6XPpc+lz6XPpc+lz6XPpc+lz6XPpc+lz6XPpc+nPM/6eT+fRX5znos4W8+dguEFwguEFwguEFwguEFwguEFwguEFwguEFwguEFwguEFwguEFwguEFwguEFwguEFwguEFwguEFwguf2H39g77/wBmP5o99ei/uF/4L+4L5fa96c8/e/Qv7hf3C/8AHzHlRut74dn36Hp8OywRGh3gquv0Pjw+LCD97+323//EACkRAAEEAgEEAQIHAAAAAAAAAAABAhNRAxQRBBIhUjEQQCMzQlBwgKH/2gAIAQIBAT8BYxr28qQsoiYQsohZRCyiJlETKIWUJhYnwgvT4188Gtio1sVGtio1sVGtio1sVGtio1sVGtio1sVGtio1sVGtio1sVGtio1sVGtio1sVGtioXpcap4+mD8tB+JXO5IHGu772R6eEUlfZK+yV9kr7JX2SvslfZK+yV9kr7JX2SvslfZK+yV9kr7JX2SvslfZK+yV9kr7JX2SvslfZK+yV9kr7JX2Svv+AU4/uZi6aRvdyaiL+o1E9v8NVvsP6ftejefkXpET5caiexqp7Gp455+46fIxMfCqNjb8OO7H7CLjRee4yZGLlavI9+N3nuOcfz3H4fsJkxtaqc/tv/xABBEAABAgQEAwUGAwYDCQAAAAABAAIRMTKRAyFBoRJCcRAiMFCSE1FhcrHRI4HBFDNAUuHwBCDxJGBigpOywtLi/9oACAEBAAY/AlAfU9kP0RHCEYQspKJ0MQv6L8oLSydLP4KPGQnRzJ1Q+CmVJAdkYqEIqndU7qndU7qndU7qndU7qndU7qndU7qndU7qndU7qndU7qndU7qndU7qndU7qndU7qndU7qndU7qndU7qndU7qndU7qndU7qndU7qEuyA8//AC7H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s/pbp03I7d+T68jaz+lunTcjt35PryNrP6W6dNyO3fk+vI2s/pbp03I7d+T68jaz+lunTcjt35PryNrP6W6dNyO3fk+vI2s/pbp03I7d+T68jaz+lunTcjt35PryNrP6W6dNyO3fk+vI2s/pbp03I7d+T68jaz+lunTcjt35PryNrP6W6dNyO3fk+vI2s/pbp03I7d+T68jaz+lunTcjt35PryNrP6W6dNyO3fk+vI2s/pbp03I7d+T68jaz+lunTcjt35PryNrP6W6dNyO3fk+vI2s/pbp03I7d+T68jaz+lunTcjt35PryNrP6W6dNyO3fk+vI2s/pbp03I7d+T68jaz+lunTcjt35PryALNqiJvKtZ/S3TpuR2wcjSATHEmOJMcSY4kxxJjiTHEmOJMcSY4kxxJjiTHEmOJMcSY4kxxJjiTHEmOJMcSY4kxxJjiTHEmOJMcSY4kxxJjiTHEmOJMcSY4kxxJjiTHEmOJMcSY4kxxJjiTHEmOJMcSY4kxxJjiQDLdOm5HbrJDyW6dAOHtFgdStdStdStdStdStdStdStdStdStdStdBEGM48ApWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWupWuhGDaXum5H+YiIto/wAKMIGc4lkDlAEsCiJKAyT2AHfJArqwP1ceq2siJZFJ05dqz/xCiIZqKIiLaP8ACo2AOWcoEjnXA1tzEJkxaRFisRehkI5mbYpsmAEQT+oA4gQjIi2SAA6a4+gREM1H/NunTcj/ADbT/CsCjBGAEEYEd0wvRWEkCbC08s0H6RRCAP6ng8Yy2fpO5xXQGvaQQBqjKAx4sIC64KtYraf4U2CA9puR2RWQlgC2JygyKwAx2zDi/wDEQ48AATGdkjdCBcDcXjBgLQyiQV1G3CxKMQLujkWrwq1j/m3ToToiI3B1K11K11K11K11K11K11K11K11K11K11K11K11K11K11K11K11K11K11K11K11K10cpjWElwSuCVwSuCVwSuCVwSmC9kwufiOUxrCS4JXBK4JXBK4JXBK4JTBeyYXPxStdStdStdStdStdStdStdStdStdStdStdStdStdStdStdStdStdStdStdStdStdBDAeRj6N4TFYVXJVyVclXJVyVclXJVyVclXJVyVclXJVyVclXJVyVclXJVyVclXJVyVclXJVyVclXJVyVclXJVyVclXJVyVclXJVyVclXJVyVclXJVyVclXJVyVclXJVyVclXJVyVclXJVyVclXJVyVclXL/AOB//9oADAMBAAIAAwAAABAFOHLAICELLDHHHHHHHHHHHHHHHHHHGfwHfSgIIIIIIIIIIIIIIIIIIIIIIIIIILxD/vv3f/X/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP7+oQwwwwATwwwwwwwwwwwwwwwwwwwwwwk808TEks8888888888888888888888888/c888888888888888888888888888888xU8888888888888888888888888888889U8888888888888888888888888888888U8888888888888888888888888888888U8888888888888888888888888888888U8888888888888888888888888888888U8888888888888888888888888888888U8888888888888888888888888888888U8888888888888888888888888888888U8888888888888888888888888888888U8888888888888888888888888888888U8888888888888888888888888888888U8888888888888888888888888888888U8888888888888888888888888888888U8888888888888888888888888888888U88888MMMMMMMMMMMMMMMMMMMMMMMM8808888s888881x1+wxxy5888888888888c8888888888DBwihQiDT88888888884888888888888888888888888888888888/8QAJhEAAgEDBAEEAwEAAAAAAAAAAAFhEZHwITFB4UAQUFGhIICx8f/aAAgBAwEBPxBlQnJht5JDQpU1K1JiQ3BiUon/AAxJGJIxJGJIxJGJIxJGJIxJGJIxJGJIxJGJIxJGJIxJGJIxJCTq3X1lZjXT+I7N9Uebea2atLESyI1iNYjWRGsRrITeFiNYjWI1iNYjWI1iNYjWI1iNYjWI1iNYjWI1iNYjWI1iNYjWI1iNYjW9I9YzNfwSp5deVBzkj18tKvsCdbewamn7mc3DRv8Afoq/2NHfo0Z2Nk+/RlfRhfQnqk90+RSJU2r09UErUo6a51+xB5asrnyEkvKfONC23Htv/8QAKREAAgAGAQIGAgMAAAAAAAAAAAERIWGR0fDhEHExQEFRgaFQsWCAwf/aAAgBAgEBPxBMVGIl+H7FL7ZubNUSbH/R6Q2RNTYzj+wbRTd3k2N5NjeTY3k2N5NjeTY3k2N5NjeTY3k2N5NjeTY3k2N5NjeTY3k2N5NjeTY3k2N5HRJB930+uQrhIlQirvAo6bal3x386pwpd2Js47sq7sq7sq7sq7sr/bxY0+u7Ku7Ku7Ku7Ku7Ku7Ku7Ku7Ku7Ku7Ku7Ku7Ku7Ku7Ku7Ku7Ku7Ku7Ku7Ku7Ku7Ku7Ku7Ku7Iletem26N+bSlB16KUReabh/AJE/wC5npL8ci8F9eTRyE6SW3J4puzkZwgfHJrXJ7f05GsSeGnPmJKzmRUUx5iNsJJb7izDsLDIhupDQ3uRKHpKQn6lfxyJAs4/r8b/AP/EACsQAQABAwMDBAMBAAMBAQAAAAERACHwUdHxMUHBEFChsTBhcYEgQJHhYP/aAAgBAQABPxDsMOrpUW4CToiAiw0+aE2QAmA6Okp1v31pw9iCdOV7COp0jvrV1kaf5nr/AK7RREGMKSIbF332qeGLiwI9I7Tr2pem47MJl/YsfyidPY4DY7Bf900ZBgN5L3/yly6ukEOqyBv8UCAQdAkI9Ql6UvmCNgadaTcCyy8WiP8Az/aUYMEgSHZGzeX/AGmgGFs1dILWItBHijBIjMrLLFgNiUL0w0J4ncgR0l1nrSF53mYUM2gT9RpFMiUhZMbarNd71/kB+9Kw4VhwrDhWHCsOFYcKw4VhwrDhWHCsOFYcKw4VhwrDhWHCsOFYcKw4VhwrDhWHCsOFYcKw4VhwrDhWHCsOFYcKw4VhwrDhWHCsOFYcKw4VhwrDhWHCiyV6SyPpOtgU57p499SA6jJ6fFfb6IekAACYf5iLjDDFJhPqYZzSV4373760QxCNOWDNqUSf/RVgYGBh6kkEWNAIZoDWAYycZkHXvjudCpELMKoWZZjuYgID294+K+30CHdECsMnU1D+1AYHJiTURIW6UCnqMxFQUjq9+9dMmSq5WJZDqwvViQSot1Aex3olJGTWJAqyUO/X3hFAnYWloPfRhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhgrIiTpVwNSdmi7CI/a10pt0NAKGRemG6kd0qigQ2Sq2glCnamyhDbyUKKenSbLegJrlZC+BIDqxVxayrWAHLrD1FyEYR8BAhok2zrYb3FJDiQRPcRmA2Uf12osPVnBRKQYD+KzCi1sNfqUAT3CQXaSz7HCG3qLl+sF+tR54HYSjnSOGvN3s4mXGvcSCCgCWJR6UMRpPmQySx6jZ6rWVFh1wEZM3TAe35rT0w/H/VDXP4jUSBC9RLSrL/ISoSWCEQKCXoZ0CYCAhIV0K51EiiSM9S7D3CSAhZACb6hUZHUkJ2I6XiaJxpjEMIWz/cRH7qATHhuLJ6W8XdrLVdt0AapdKJaBdHUZLPgErRR0lkFqzLcjRBbIMKfSReAd2k9xCxtEwYLLIIC7MWGr2AcpGUiT9UJw0bIpucQBQgm0wOkOnx2xCdkyRHSIh9vZrT0mM2zIdv41yqnKqcqpyqnKqcqpyqnKqcqpyqkVSzLtB+1cqpyqnKqcqpyqnKqcqpyqnKqcqpyqnKqcqpyqnKqcqpyqnKqcqpyqnKqcqpyqnKqcqpyqnKqcqpyqnKqcqpyqnKqcqpyqnKqcqpyqnKqcqpyqnKqcqpyqnKqcqpyqnKqcqoZod6Fp/PSd8LDoR2/4W+zlSgTbB7LBRRopZoxle9YoAI2dk1/h1c24Tzeb/8AOtNYEFM9gJKF0E/yjpJIwOEzCxUEKKBT6UCfCxnIk2ISwULRAxIti8kEX/bP6qOoElKhv3KWayJERqEfvt1RalQVYFIJRWJQn9ldWfKLW2nu1p6x1t/xMGDBiLDIopVgBVFAAqoArRiTsBEiJBEvNGJOwESIkES80lGIwwU3ewP3FrU1X1IrKmYu/wDj+z2UwYMGDBgwYMGDBgwYMGDBgwYMGDBgwYMGDBgwYMGDBiEArEy6D1b1gNGowPNY7T/gOgYGqSSOit9bU29gRsBcFCiZViTotQJzgECBELQmZFMhCUqrYVVkOqLG1ClJ9suS2i60CrLzFboQt7lpinmUMAEEWFj/ABE0YelUsVMQzOYG0IM2BAhAEpKTAAUKbDJSo3f9qQBb7EGIFbAQkqlbBIH+R2qVHkVCUYCjCJ/lQoHRNJsApEXnu2teihW2utWhFF+buFNVheCxyy2Q2e8DSzA9GGkDIkX94IK/GrDnC+CCsLAi5ooy9sR604AJRhAqtt8UjTDvWITgKwDBiTkEiREsiXn2P4X6VgNGov0SDWElnt3f7esdp+Mw9Kyy3zTAOpNypldgrgX7dxihP0LM96PLcXFujIWEJ3L2aMZnRiHUEmYAAguW+PgICUJABKMAEwAAHoS9qYoGPV13YQRch17ZF9GQosIskltPWCnEHsBgkyAoG0OYRVqvvYG9B2gUQywfoKEdBRRmIgTfoN1xTyShKRmWTEnIBEABYAtHsfwv0rAaNPqVQNiTMW6lr/2lKC9ojt+Mw9Pcfwv0rAaNZHesFo/jMPT3H8L9KwGjSVzhF8hhWNiZvOlr1gtH8Zh6e4/hfpWA0aGp9TyVSxAPXVaAmC9ojs/jMPT3H8L9KwGjUf8A196wWj+Mw9Pcfwv0rAaPpgtH8Zh6e4/hfpWA0fTBaP4zD09x/C/SsBo+mC0fxmHp7j+F+lYDR9MFo/jMPT3H8L9KwGj6YLR/GYenuP4X6VgNH0wWj+Mw9Pcfwv0rAaPpgtH8Zh6e4/hfpWA0fTBaP4zD09x/C/SsBo+mC0fxmHp7j+F+lYDR9MFo/jMPT3H8L9KwGj6YLR/GYenuP4X6VgNH0wWj+Mw9Pcfwv0rAaPpgtH8Zh6e4/hfpWA0fTBaP4zD09x/C/SsBo+mC0fxmHp7j+F+lYDR9MFo/jMPT3H8L9KwGj6YLR/GYenuP4X6VgNH0wWj+Mw9Pcfwv0rAaPpgtH8Zh6e4/hfpWA0fTBaP4zD09x/C/SsBo+mC0fxmHp7j+F+lYDR9MFo/jMPT3H8L9KwGj6YLR/GYenuP4X6VgNH0wWj+Mw9Pb6gSsBSwIlZT2On8IP/a+F+lYDR9MFo/jFxS25RxZtXFm1cWbVxZtXFm1cWbVxZtXFm1cWbVxZtXFm1cWbVxZtXFm1cWbVxZtXFm1cWbVxZtXFm1cWbVxZtXFm1cWbVxZtXFm1cWbVxZtXFm1cWbVxZtXFm1cWbVxZtXFm1cWbVxZtXFm1cWbVxZtXFm1cWbVxZtXFm1cWbVxZtXFm1cWbUc7qrKtYDR9MFo/j+K9ysBo+kKnPWez9FYD4rAfFYD4rAfFYD4rAfFYD4rAfFYD4rAfFOKQKdwg0/TWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KGSVC5dn9emC0f+sQiADD1JfFK2UgTP+qgf7TDiBU9wUwpaSbSa0IUBkCDY0MrSOmpJdAU1YIiTb90koylZMaRxNAURgJvFJ1YCuLSEaYUjHZ7ImiEQAYepL4rpra4gnuwLUS4GOWBJAgQs9yo73EcsBQkiMhZtMsEtHZuFEhVYiZJEOw0lm4hVSFQQpCMg9SklPOQxFgJ9+4VZJYgSWDonzTCkY7PZE/9bAaPpgtH/ry7bPAtgZbT+p7d6Toy93Cm11dqzPRvQwwpFyydQMSqCO7AkHOmwQsbwIP6RpV5f9g5v/p1n/KnpI3MaY2Mtu5FjvOwbSXX3mg/29qzen0l9MCVJQT1sL8U5jO0dMhdkbAJRgAljLFD0AFG0dZ17jaie4u5gQL3jbU27hSEG8VkBUgEqQSwyItt5xkyIkTsl4k7k0qlrnbNdekJdCs3p/62A0fQYoCCvQfo/ZWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KwHxWA+KUkFMwgCLLX8Hjx48ePHhuMUeohgk6UpIKZhAEWWv4PHjx48ePDcYo9RDBJ0rAfFYD4rAfFYD4rAfFYD4rAfFYD4rAfFYD4rAfFYD4rAfFYD4rAfFYD4rAfFYD4rAfFYD4rAfFOFJA7kfz0kT7BNaDQ/VZdmsuzWXZrLs1l2ay7NZdmsuzWXZrLs1l2ay7NZdmsuzWXZrLs1l2ay7NZdmsuzWXZrLs1l2ay7NZdmsuzWXZrLs1l2ay7NZdmsuzWXZrLs1l2ay7NZdmsuzWXZrLs1l2ay7NZdmsuzWXZrLs1l2ay7NZdmsuzWXZrLs1l2ay7NZdmsuzWXZrLs1l2ay7NZdn/8AA//Z" alt="" />
3、消息回复
前端效果参考代码,前端可根据自己的需要进行功能封装,实现即时消息的功能,主要是JS实现的消息轮询和发送功能,
Html部分:
<div style="display: none" id="ShowMessage">
<table class="tableStyle" formmode="transparent" footer="normal">
<tr>
<th class="th" colspan="2" style="text-align: left" id="msgTitle">您的新消息</th>
</tr>
<tr>
<td style="text-align: right; vertical-align: top; width: 90px">消息内容:</td>
<td style="height: 312px; vertical-align: top">
<!--消息Id-->
<input type="hidden" name="msgId" id="msgId" />
<!--消息发送者Id-->
<input type="hidden" name="senderId" id="senderId" />
<div id="msgContentDiv" style="overflow-y: auto; height: 100%">
</div>
<div id="msgReplyDiv" style="overflow-y: auto; height: 96%; width: 100%; display: none">
<textarea id="msgReplyContent" name="msgReplyContent" style="overflow-y: auto; height: 94%; width: 96%; margin: 4px auto"></textarea>
</div>
</td>
</tr>
<tr>
<td colspan="2" style="text-align: center">
<div id="readOperate">
<input type="button" value="已读" id="readBut" /> <input type="button" value="回复" id="goToReplyBut" /> <input type="button" value="关闭" id="closeDialogBut" />
</div>
<div id="replyOperate" style="display: none">
<input type="button" value="确认回复" id="replySureBut" /> <input type="button" value="取消返回" id="replyCancleBut" />
</div>
<div id="sendOperate" style="display: none">
<input type="button" value="发送" id="sendSureBut" /> <input type="button" value="关闭" id="sendCancleBut" />
</div>
<div id="closeOperate" style="display: none">
<input type="button" value="关闭" id="closeMessageBut" />
</div>
</td>
</tr>
</table>
</div>
JavaScript部分:
// 获取消息
function showMessage() {
var ajaxOptions = {
type: "POST",
url: '/Main/ajax/Message.ashx',
data: { "function": "GetListNew" },
async: true,
dataType: "json",
contentType: "application/x-www-form-urlencoded",
beforeSend: function () { $("#messageStatusPrompt").html("正在查询..."); },
success: function (result) {
if (result.Status && result.Data.length > 0) {
// 有消息才显示
$("#readOperate,#msgContentDiv").show(function () {
$("#replyOperate,#sendOperate,#closeOperate,#msgReplyDiv").hide();
});
$("#msgId").val(result.Data[0].Id);
$("#senderId").val(result.Data[0].CreateUserId);
$("#msgTitle").html("来自【" + result.Data[0].CreateCompanyName + "】公司【" + result.Data[0].CreateDepartmentName + "】部门" + result.Data[0].CreateBy + "的消息");
$("#msgContentDiv").html(result.Data[0].Contents);
Dialog.open({
InvokeElementId: "ShowMessage",
Title: "消息提醒",
ShowCloseButton: false
});
$("#messageStatusPrompt").html("请处理消息");
} else {
$("#messageStatusPrompt").html("木有消息,继续");
getMessage();
}
},
complete: function() {
$("#messageStatusPrompt").html("完成");
},
error: function (xmlHttpRequest, textStatus, errorThrown) {
}
};
$.ajax(ajaxOptions);
}
//定时获取消息 20秒一次
var count = 20;
var times = 1;
var timeId;
function getMessage() {
count--;
if (count > 0) {
timeId=setTimeout(getMessage, 1000);
$("#messageStatusPrompt").html(count);
} else {
count = 20;
times++;
$("#messageStatusPrompt").html("正在查询消息...");
showMessage();
}
};
// 发送消息 向谁发送
function sendMessage(receiverId, receiver) {
if (receiverId !== "") {
clearTimeout(timeId);
$("#sendOperate").show(function () {
$("#msgTitle").html("向" + receiver + "发送消息");
$("#senderId").val(receiverId);
$("#readOperate,#replyOperate,#closeOperate").hide();
$("#msgReplyDiv").show(function() {
$("#msgContentDiv").hide();
$("#msgReplyContent").val("");
});
Dialog.open({
InvokeElementId: "ShowMessage",
Title: "消息提醒",
ShowCloseButton: false
});
});
}
}
// 已读 $("#msgId").val()
function read(msgId) {
var ajaxOptions = {
type: "POST",
url: '/Main/ajax/Message.ashx',
data: { "function": "Read", "Id": msgId },
async: true,
dataType: "json",
contentType: "application/x-www-form-urlencoded",
beforeSend: function () { $("#messageStatusPrompt").html("正在查询..."); },
success: function (result) {
//$("#messageStatusPrompt").html(result.StatusMessage);
//Dialog.close();
getMessage();
},
complete: function () { $("#messageStatusPrompt").html("完成"); },
error: function (xmlHttpRequest, textStatus, errorThrown) {
}
};
$.ajax(ajaxOptions);
}
$(function () {
getMessage();
// 关闭事件
$("#closeDialogBut,#closeOperate,#sendCancleBut").click(function () {
Dialog.close();
// 关闭时调用已读消息接口 将当前消息从缓存中排除掉
read($("#msgId").val());
});
// 到回复消息按钮事件
$("#goToReplyBut").click(function () {
$("#msgContentDiv").hide(function () {
$("#msgReplyDiv").show(function () {
$("#readOperate").hide(function () {
$("#replyOperate").show();
$("#msgReplyContent").val("");
});
});
});
});
// 取消回复事件
$("#replyCancleBut").click(function () {
$("#msgReplyDiv").hide(function () {
$("#msgContentDiv").show(function () {
$("#replyOperate").hide(function () {
$("#readOperate").show();
});
});
});
});
// 确认回复及发送事件处理做成一样的即可
$("#replySureBut,#sendSureBut").click(function () {
var ajaxOptions = {
type: "POST",
url: '/Main/ajax/Message.ashx',
data: {
"function": "Send",
"receiverId": $("#senderId").val(),
"contents": $("#msgReplyContent").val()
},
async: true,
dataType: "json",
contentType: "application/x-www-form-urlencoded",
beforeSend: function () { $("#messageStatusPrompt").html("正在处理..."); },
success: function (result) {
if (result.Status) {
$("#replyOperate,#sendOperate").hide(function () {
$("#closeOperate").show();
// 回复的内容
$("#msgReplyContent").val("消息已发送成功!");
});
}
},
complete: function () { $("#messageStatusPrompt").html("完成") },
error: function (xmlHttpRequest, textStatus, errorThrown) {
}
};
$.ajax(ajaxOptions);
});
});
注意:在消息回复或发送时会停止对消息的轮询,知道消息发送完成才会继续轮询获取消息,消息只有在点击已读以后,下次请求时才会去掉该条消息。点击消息已读以后会将该消息从缓存中移除掉。
接口具体内容如下(接口的安全调用会另外说明)
1. 获取消息
content中包含的字段定义
字段 |
类型 |
必须 |
示例值 |
注释 / 说明 |
function |
string |
是 |
GetListNew |
接口调用方法:GetListNew |
UserInfo |
string |
是 |
|
登录成功后的用户信息 |
content格式,c#调用举例,接口地址:string url="http://host_name/UserCenterV42/MessageService.ashx";
WebClient webClient = new WebClient();
NameValueCollection postValues = new NameValueCollection();
postValues.Add("function", "GetListNew");
postValues.Add("UserInfo", "登录后的的用户信息");
byte[] responseArray = webClient.UploadValues(url, postValues);
string response = Encoding.UTF8.GetString(responseArray);
特别说明:
- 为了增加性,此接口建议使用HTTP Post方式提交请求。
服务器返回
{
"Status": true,
"StatusCode": null,
"StatusMessage": "消息获取成功。"
"Data": [消息列表的序列化]
}
错误或者未找到相关数据时返回以下内容
{
"Status": false,
"StatusCode": null,
"StatusMessage": "消息获取失败。"
}
2. 改变消息状态为已读
content中包含的字段定义
字段 |
类型 |
必须 |
示例值 |
注释 / 说明 |
function |
string |
是 |
Read |
接口调用方法:Read |
UserInfo |
string |
是 |
|
登录成功后的用户信息 |
Id |
string |
是 |
|
消息Id |
content格式,c#调用举例,接口地址:string url="http://host_name/UserCenterV42/MessageService.ashx";
WebClient webClient = new WebClient();
NameValueCollection postValues = new NameValueCollection();
postValues.Add("function", "Read");
postValues.Add("UserInfo", "登录后的的用户信息");
postValues.Add("Id", "消息Id");
byte[] responseArray = webClient.UploadValues(url, postValues);
string response = Encoding.UTF8.GetString(responseArray);
特别说明:
- 为了增加性,此接口建议使用HTTP Post方式提交请求。
服务器返回
{
"Status": true,
"StatusCode": null,
"StatusMessage": "消息状态已改为已读。"
}
错误或者未找到相关数据时返回以下内容
{
"Status": false,
"StatusCode": null,
"StatusMessage": "消息状态改变失败。"
}
3. 发送消息
content中包含的字段定义
字段 |
类型 |
必须 |
示例值 |
注释 / 说明 |
function |
string |
是 |
Send |
接口调用方法:Send |
UserInfo |
string |
是 |
|
登录成功后的用户信息 |
encrypted |
bool |
是 |
true |
是否加密消息接收者主键 |
receiverId |
string |
是 |
|
消息接收者Id |
contents |
string |
是 |
|
消息内容 |
functionCode |
string |
否 |
|
消息类型 |
content格式,c#调用举例,接口地址:string url="http://host_name/UserCenterV42/MessageService.ashx";
WebClient webClient = new WebClient();
NameValueCollection postValues = new NameValueCollection();
postValues.Add("function", "Send");
postValues.Add("UserInfo", "登录后的的用户信息");
postValues.Add("encrypted", true);
postValues.Add("receiverId", "消息接收者Id,注意是否加密");
postValues.Add("contents", "消息内容");
postValues.Add("functionCode", "消息类型");
byte[] responseArray = webClient.UploadValues(url, postValues);
string response = Encoding.UTF8.GetString(responseArray);
特别说明:
- 为了增加性,此接口建议使用HTTP Post方式提交请求。
服务器返回
{
"Status": true,
"StatusCode": null,
"StatusMessage": "消息状态已改为已读。"
}
错误或者未找到相关数据时返回以下内容
{
"Status": false,
"StatusCode": null,
"StatusMessage": "消息状态改变失败。"
}
- 通用权限管理系统接口文档V4.2 版本之角色管理功能介绍
角色功能维护界面:可实现添加.修改.删除角色,向角色添加或删除人员,角色具有哪些菜单的管理功能.
- get_k_data 接口文档 全新的免费行情数据接口
get_k_data 接口文档 全新的免费行情数据接口 原创: Jimmy 挖地兔 2016-11-06 前言在tushareAPI里,曾经被用户喜欢和作为典范使用的API get_hist_data ...
- docker搭建yapi接口文档系统、Idea中上传接口、在线调用
一.前言 在我们后端开发中,必不可少的是接口的交接,有很多种方式,常见的就是swagger,不过这个侵入性太强了.还有就是接口文档的框架,比如今天小编带大家一起搭建的yapi,在公司还是挺常见的! 今 ...
- 接口文档神器Swagger(下篇)
本文来自网易云社区 作者:李哲 二.Swagger-springmvc原理解析 上面介绍了如何将springmvc和springboot与swagger结合,通过简单配置生成接口文档,以及介绍了swa ...
- 使用 Laravel-Swagger 编写接口文档(php)
使用 Laravel-Swagger 编写接口文档 Table of Contents Swagger 文档管理 官方网站:https://swagger.io/ 快速编写你的 RESTFUL API ...
- Springboot中整合knife4j接口文档
在项目开发过程中,web项目的前后端分离开发,APP开发,需要由前端后端工程师共同定义接口,编写接口文档,之后大家都根据这个接口文档进行开发. 什么是knife4j 简单说knife4j就swagge ...
- Spring Boot 系列(七)Swagger2-生成RESTful接口文档
Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参数和模型紧密集成到服 ...
- 从零开始学 Web 之 Ajax(四)接口文档,验证用户名唯一性案例
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- python接口自动化21-规范的API接口文档示例
前言 接口文档到底长啥样?做接口测试最大的障碍在于没有接口文档,很多公司不注重接口文档的编写,导致测试小伙伴没见过接口文档. 运气好一点的测试小伙伴可能厚着脸皮找开发要过接口文档,然而拿过来的接口文档 ...
随机推荐
- 巧解Tomcat中JVM内存溢出问题
你对Tomcat 的JVM内存溢出问题的解决方法是否了解,这里和大家分享一下,相信本文介绍一定会让你有所收获. tomcat 的JVM内存溢出问题的解决 最近在熟悉一个开发了有几年的项目,需要把数据库 ...
- [置顶] Linux信号相关笔记
最近又温习了一遍Linux中的信号知识,发现有很多东西以前没有注意到,就通过这篇博客记录一下,巩固一下知识点. 一,信号基础: 信号是什么?为了回答这个问题,首先要从异常说起,这里的异常不是指c++/ ...
- <meta http-equiv = "X-UA-Compatible" cotent = "IE=edge,chrome=1"/>
<meta http-equiv = "X-UA-Compatible" cotent = "IE=edge,chrome=1"/> 制定ie调用哪 ...
- ie10中元素超出父元素的宽度时不能自动隐藏
(从已经死了一次又一次终于挂掉的百度空间人工抢救出来的,发表日期2014-02-21) 今天遇到一个问题,ie10中元素超出父元素的宽度时不能自动隐藏,而其余浏览器却正常显示. 解决方法是,手动给其设 ...
- Tomcat创建虚拟目录和程序热部署
虚拟目录的设置 方法一:在${tomcat安装目录}/conf/Catalina/localhost目录下添加与web应用同名的xml配置文件,这里站点名称为test为例子. test.xml内容:& ...
- Animated Scroll to Top
Due to a number of requests, I'm writing a detail tutorial on how to create an animated scroll to to ...
- IOS 7 Study - UIActivityViewController(Presenting Sharing Options)
You want to be able to allow your users to share content inside your apps with theirfriends, through ...
- CodeForces 173C Spiral Maximum 记忆化搜索 滚动数组优化
Spiral Maximum 题目连接: http://codeforces.com/problemset/problem/173/C Description Let's consider a k × ...
- Codeforces Round #339 (Div. 2) A. Link/Cut Tree 水题
A. Link/Cut Tree 题目连接: http://www.codeforces.com/contest/614/problem/A Description Programmer Rostis ...
- Codeforces Round #260 (Div. 1) C. Civilization 并查集,直径
C. Civilization Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/455/probl ...