【发布时间】:2016-11-04 05:17:45
【问题描述】:
我正在尝试使用 socket.io + angular 创建一个聊天室网络应用程序。
我有一个特定的文本框,用户可以在其中输入他想要连接的房间的名称。然后,我尝试将此用户连接到该特定房间并将他的所有消息发送到该房间。
但是,当我尝试将字符串发送到聊天中时,请求正在服务器端处理(控制台日志输出从服务器打印)但不在控制器上 socket.on('chat_message', function(data) ...) 方法不打印控制台日志。
我做错了什么?
代码如下。还有更多我认为不需要的代码(与角度相关的东西)。
提前致谢
查看
<form ng-submit="submit()">
<input autocomplete="off" ng-model="insertedText" type="text" />
<button type="button" ng-click="submit()">
Send
</button>
</form>
控制器
mymodule.controller("cntrlChat", ['$scope', 'myService',
function($scope, myService){
var socket = io();
$scope.messages = [];
$scope.room= myService.get();
socket.emit('room', $scope.room);
$scope.submit=function(){
socket.emit('chat_message',{ room: $scope.room, msg: $scope.user+": "+$scope.insertedText });
$scope.insertedText='';
return false;
}
socket.on('chat_message', function(data){
console.log('room-->'+data.room+' msg---->'+data.msg );
$scope.$apply(function() {
$scope.messages.push(data.msg);
});
});
}]);
服务器
var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.use(express.static(__dirname + '/'));
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket){
io.emit('chat_message', "welcome");
socket.on('room', function(room) {
socket.join(room);
});
socket.on('chat_message', function(data){
console.log("room---->"+data.room, "msg---->"+data.msg);
io.sockets.in(data.room).emit('chat message',data.msg);
});
socket.on('disconnect', function(){
io.emit('chat message', "Bye");
});
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
【问题讨论】:
-
如果您需要帮助,您将需要比“它不起作用”更多的细节
标签: angularjs node.js socket.io