在任何地方都可以广播 WebSocket 事件 .. 在介绍 Websocket 的课程里,我们创建了一个聊天功能 .. 访问一下 demo/ws ..
现在我想让用户登录以后在这个聊天窗口上显示一个登录提示 .. 回到项目 .. 用户登录会触发一个 user.login 事件 .. 在应用里我们监听了这个事件,给事件绑定了一个 User 里的 log 方法来处理 .. 在 User 这个 listener 里面 ..
先导入一个 Ws ..
然后在 log 方法里 .. 用一下 Ws ... 先使用 getChannel 得到 Websocket 频道 ... 应用里有个叫 demo 的频道 .. Websocket 频道是在 start .. socket.js 文件里面注册的 .. 这里有个 demo ..
得到频道以后,再用一下 topic 方法,获取到频道里的某个主题 .. 频道里默认有个主题,它的名字跟频道的名字是一样的,这里就是 demo ..
接着再用一下 broadcast ... 广播一个事件 ... 事件的名字是 message .. 在前端那里我们已经监听了这个 服务端的 message 事件 ...
给它带点数据 ... 一个对象 .. 里面需要一个 username 用户名 .. ... 对应的值就是 user 里的 username ..
再添加一个 content ... just logged in ...
试验
回到浏览器 .. 可以试一下 ..
调整一下窗口 ...
打开浏览器的访客模式 ...
然后打开应用的登录页面 ... 输入
打开一个登录窗口 .. 输入用户名 ... 密码 ... 登录一下 ... 成功以后 .. 在这个 Websocket 演示页面上,会出现一条消息 .. 提示有一个用户登录了 ..
这个提示信息就是我们在 User.log 里面广播的一条消息 ... 回来再试一下 ... 先退出登录 ..
再打开登录页面 ... 输入用户名 .. 密码 .. 登录一下 ..