Javascript 引用socket.io时出错
我正在尝试构建一个具有聊天功能的express应用程序,但是socket.io无法正常工作。当我运行服务器时,它给出了未捕获的引用错误 在www文件中Javascript 引用socket.io时出错,javascript,node.js,express,socket.io,Javascript,Node.js,Express,Socket.io,我正在尝试构建一个具有聊天功能的express应用程序,但是socket.io无法正常工作。当我运行服务器时,它给出了未捕获的引用错误 在www文件中 var server = http.createServer(app); require('../socket-server')(server); 在socket-server.js文件中 'use strict' var socketIO = require('socket.io'); module.exports = function
var server = http.createServer(app);
require('../socket-server')(server);
在socket-server.js文件中
'use strict'
var socketIO = require('socket.io');
module.exports = function(server) {
console.log("success");
var io = socketIO(server);
io.on('connection', (socket) => {
socket.on('chatMessage', (data) => {
io.emit('chatMessage', data);
});
});
}
在task.hbs文件中
<div>
<div class="row">
<div class="col-md-8">
<textarea id="code-screen"></textarea>
</div>
<div class="col-md-4" id="chatbox">
<div class="panel panel-primary">
<div class="panel-heading">
CHAT ROOM
<span class="pull-right" id="chatbox-username">
{{#if user}}
{{user.name}}
{{/if}}
</span>
</div>
<div class="panel-body">
<ul class="media-list" style="height: 300px; overflow-y: scroll" id="chatbox-listMessages">
</ul>
</div>
<div class="panel-footer">
<div class="input-group">
<input type="text" class="form-control" placeholder="Enter The Message" id="userMessage">
<span class="input-group-btn">
<button type="button" id="chatButton" class="btn btn-primary">SEND</button>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.48.4/codemirror.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.48.4/mode/javascript/javascript.min.js"></script>
{{!-- <script src="../node_modules/socket.io/lib/socket.js"></script> --}}
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost:3000');
var editor = CodeMirror.fromTextArea(document.getElementById('code-screen'), {
lineNumbers: true,
theme: 'material'
});
var username = $("chatbox-username").val();
if(username === "") {
var userId = Math.floor(Math.random() * 9999).toString();
username = "User" + userId;
$(#chatbox-username).text(username);
}
var userMessage = function(name, text) {
return ('<li class = "media"> <div class = "media-body"> <div class = "media">' +
'<div class = "media-body"/>' +
'<b>' + name + '</b> : ' + text + '<hr/> </div> </div> </div> </li>'
);
};
document.getElementById('chatButton').addEventListener("click", sendMessage);
function sendMessage() {
var userMessage = $(#userMessage).val();
socket.emit('chatMessage', { message: userMessage, username: username });
$('#userMessage').val("");
};
socket.on('chatMessage', (data) => {
$('#chatbox-listMessages').append(userMessage(data.username, data.message));
});
</script>
聊天室
{{{#如果用户}}
{{user.name}
{{/if}
发送
{{!-- --}}
var socket=io.connect('http://localhost:3000');
var editor=CodeMirror.fromTextArea(document.getElementById('code-screen'){
行号:对,
主题:“材料”
});
var username=$(“聊天室用户名”).val();
如果(用户名==“”){
var userId=Math.floor(Math.random()*9999.toString();
username=“User”+用户ID;
$(#聊天室用户名).text(用户名);
}
var userMessage=函数(名称、文本){
返回(“”+
'' +
''+name+':''+text+'
'
);
};
document.getElementById('chatButton')。addEventListener(“单击”,发送消息);
函数sendMessage(){
var userMessage=$(#userMessage).val();
emit('chatMessage',{message:userMessage,username:username});
$('#userMessage').val(“”);
};
socket.on('chatMessage',(数据)=>{
$(“#聊天室列表消息”).append(userMessage(data.username,data.message));
});
如何引用/socket.io/socket.io.js文件,以便可以引用脚本中的io变量。替换
$(#chatbox-username).text(username);
与
$('#chatbox-username').text(username);