Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript socket.io聊天示例-sails.js_Javascript_Node.js_Socket.io_Sails.js - Fatal编程技术网

Javascript socket.io聊天示例-sails.js

Javascript socket.io聊天示例-sails.js,javascript,node.js,socket.io,sails.js,Javascript,Node.js,Socket.io,Sails.js,所以我尝试将socket.io集成到我的sails项目中。然而,我在sails.js网站上发现的文档很少。我正在尝试在我的服务器的两个浏览器之间建立聊天 在客户机中,我有: io.socket.get('/posts/testStream', function serverResponded (body, JWR) { // JWR ==> "JSON WebSocket Response" console.log('Sails responded with: ', body);

所以我尝试将socket.io集成到我的sails项目中。然而,我在sails.js网站上发现的文档很少。我正在尝试在我的服务器的两个浏览器之间建立聊天

在客户机中,我有:

io.socket.get('/posts/testStream', function serverResponded (body, JWR) {

  // JWR ==> "JSON WebSocket Response"
  console.log('Sails responded with: ', body);
  console.log('with headers: ', JWR.headers);
  console.log('and with status code: ', JWR.statusCode);

  io.socket.on('messege', function onServerSentEvent (msg) {
      console.log(msg);
  });

  // first argument `body` === `JWR.body`
  // (just for convenience, and to maintain familiar usage, a la `JQuery.get()`)
});
这是:/posts/testStream:

testStream: function(req,res){

    res.view();
},

如何将数据广播到客户端,以及如何将消息发送回服务器?如果你能给我举个例子,那就太好了。

不知道,如果你还需要的话。为了以防万一和我自己的实践,这里有一个工作示例

我用于样式和聊天渲染。此外,所有查询都是由。在测试之前将它们放入资产文件夹

模型api/models/Chat.js:

module.exports={
属性:{
身份证:{
键入:“整数”,
primaryKey:没错,
自动递增:真,
独一无二:真的
},
文本:“字符串”
}
};
控制器api/controllers/ChatController.js:

module.exports={
do:功能(请求、恢复){
返回res.view();
}
};
查看视图/chat/do.ejs:


消息ID
你的信息
发送
var chatModel=函数(){
var self=这个;
this.messages=ko.observearray();
this.newMessage=ko.observable(“”);
this.errors=ko.observearray();
/**
*向聊天室发送消息
*
*事实上,保存到服务器并在列表中显示保存的消息
*/
this.sendMessage=函数(表单){
var self=这个;
if(self.newMessage().length>0){
io.socket.post('/chat',{text:self.newMessage()},函数(data,jwr){
//如果消息创建成功,请将其添加到消息数组中
如果(jwr.statusCode==201){
self.messages.push(数据);
self.newMessage(“”);
}否则{
self.errors.push('ERROR:'+jwr.statusCode);
}
});
}
}.约束(本);
/**
*获取最后100条信息并连接聊天室WebSocket
*/
get('/chat',{sort:'createdAt',limit:100},函数(data,jwr){
如果(jwr.statusCode==200){
自我信息(数据);
}否则{
self.errors.push('ERROR:'+jwr.statusCode);
}
});
/*
当其他用户创建新消息时,将其添加到消息数组中
*/
io.socket.on('chat',函数(msg){
如果(msg.verb==“已创建”){
self.messages.push(msg.data);
}
});
};
应用绑定(新的chatModel());

只需打开并查看魔术=)

到目前为止,我只想弄清楚我应该做什么。尝试复制几行代码只是为了看看会发生什么,但没有什么有趣的,因为文档太少了。你看了吗?是的,但我不明白如何使用socket.io,我应该在哪里写代码。它只是不清楚,因为它应该是。它会更好,如果你先尝试一些东西,并与我们分享。当您遇到困难时,我们可以帮助您。我添加了一些代码,请看一看。因此,要真正发出消息,您可以使用
io.socket.post(URI、JSON\u消息、回调)
对吗?如果我理解的很好,这应该得到一笔赏金,因为对于像我这样的新手来说,文档确实不够清晰。另外,你如何处理控制器中的帖子?如果你使用套接字,Sails会自动向所有连接的客户端广播消息。除了寄件人。若要将更改广播给发送者,您需要执行更多的操作。这就是为什么我做self.messages.push(数据)发送消息后。事实上,您不需要在controller中做更多的事情来处理
POST
,就像Sails所做的那样。但要自己在controller中处理
POST
,您需要在ChatController.js中编写自己的函数
create
update
destroy
。此外,如果您要自己处理这些函数,而不是通过Blueprint API,您也必须自己向客户端广播更改。